lib/herdic/client.rb in herdic-1.0.3 vs lib/herdic/client.rb in herdic-1.0.4

- old
+ new

@@ -23,12 +23,13 @@ load_config @config_file if @config_file @printer = Printer.new @options @printer.start_message @config_file - @store = Store.new @config_file + @store = Store.new @config_file @registry = @store.data + @cookie = (@registry[:_cookie] ||= {}) end def load_config(file) @config = {} @@ -74,10 +75,12 @@ if 'application/json' == response.content_type body = JSON.parse body register response, body end + save_cookie response unless @options['no-cookie'] + @printer.response response, body end private def get_response uri = URI.parse @meta['endpoint'] @@ -100,10 +103,14 @@ @header = spec['header'] || {} @body = spec['body'] || {} @meta['method'].upcase! @header = @header.map { |k, v| [k, v.to_s] }.to_h + + unless @options['no-cookie'] || @cookie.empty? + @header['Cookie'] = @cookie.map { |k, v| '%s=%s' % [k, v] }.join ';' + end end private def register(response, body) @register.each do |name, path| next if path.empty? @@ -114,9 +121,16 @@ key = key.to_i if key === /\A\d+\z/ val = val.try :[], key end @registry[name] = val + end + end + + private def save_cookie(response) + Array(response.get_fields('Set-Cookie')).each do |str| + k, v = str.split(';')[0].split '=' + @cookie[k] = v end end end end