Class: Faraday::Utils::Headers
Overview
Adapted from Rack::Utils::HeaderHash
Constant Summary
- KeyMap =
symbol -> string mapper + cache
Hash.new do |map, key| map[key] = if key.respond_to?(:to_str) then key else key.to_s.split('_'). # :user_agent => %w(user agent) each { |w| w.capitalize! }. # => %w(User Agent) join('-') # => "User-Agent" end end
Instance Method Summary (collapse)
- - (Object) [](k)
- - (Object) []=(k, v)
- - (Object) delete(k)
- - (Boolean) include?(k) (also: #has_key?, #member?, #key?)
-
- (Headers) initialize(hash = {})
constructor
A new instance of Headers.
- - (Object) merge(other)
- - (Object) merge!(other) (also: #update)
- - (Object) parse(header_string)
- - (Object) replace(other)
- - (Object) to_hash
Constructor Details
- (Headers) initialize(hash = {})
A new instance of Headers
9 10 11 12 13 |
# File 'lib/faraday/utils.rb', line 9 def initialize(hash={}) super() @names = {} self.update hash end |
Instance Method Details
- (Object) [](k)
26 27 28 29 |
# File 'lib/faraday/utils.rb', line 26 def [](k) k = KeyMap[k] super(k) || super(@names[k.downcase]) end |
- (Object) []=(k, v)
31 32 33 34 35 36 37 |
# File 'lib/faraday/utils.rb', line 31 def []=(k, v) k = KeyMap[k] k = (@names[k.downcase] ||= k) # join multiple values with a comma v = v.to_ary.join(', ') if v.respond_to? :to_ary super k, v end |
- (Object) delete(k)
39 40 41 42 43 44 45 |
# File 'lib/faraday/utils.rb', line 39 def delete(k) k = KeyMap[k] if k = @names[k.downcase] @names.delete k.downcase super k end end |
- (Boolean) include?(k) Also known as: has_key?, member?, key?
47 48 49 |
# File 'lib/faraday/utils.rb', line 47 def include?(k) @names.include? k.downcase end |
- (Object) merge(other)
61 62 63 64 |
# File 'lib/faraday/utils.rb', line 61 def merge(other) hash = dup hash.merge! other end |
- (Object) merge!(other) Also known as: update
55 56 57 58 |
# File 'lib/faraday/utils.rb', line 55 def merge!(other) other.each { |k, v| self[k] = v } self end |
- (Object) parse(header_string)
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/faraday/utils.rb', line 74 def parse(header_string) return unless header_string && !header_string.empty? header_string.split(/\r\n/). tap { |a| a.shift if a.first.index('HTTP/') == 0 }. # drop the HTTP status line map { |h| h.split(/:\s+/, 2) }.reject { |p| p[0].nil? }. # split key and value, ignore blank lines each { |key, value| # join multiple values with a comma if self[key] then self[key] << ', ' << value else self[key] = value end } end |
- (Object) replace(other)
66 67 68 69 70 |
# File 'lib/faraday/utils.rb', line 66 def replace(other) clear self.update other self end |
- (Object) to_hash
72 |
# File 'lib/faraday/utils.rb', line 72 def to_hash() ::Hash.new.update(self) end |