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