class Faraday::Utils::Headers
Adapted from Rack::Utils::HeaderHash
Constants
- KeyMap
symbol -> string mapper + cache
Public Class Methods
from(value)
click to toggle source
# File lib/faraday/utils.rb, line 9 def self.from(value) new(value) end
new(hash = nil)
click to toggle source
Calls superclass method
# File lib/faraday/utils.rb, line 13 def initialize(hash = nil) super() @names = {} self.update(hash || {}) end
Public Instance Methods
[](k)
click to toggle source
Calls superclass method
# File lib/faraday/utils.rb, line 41 def [](k) k = KeyMap[k] super(k) || super(@names[k.downcase]) end
[]=(k, v)
click to toggle source
Calls superclass method
# File lib/faraday/utils.rb, line 46 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
delete(k)
click to toggle source
Calls superclass method
# File lib/faraday/utils.rb, line 60 def delete(k) k = KeyMap[k] if k = @names[k.downcase] @names.delete k.downcase super(k) end end
fetch(k, *args, &block)
click to toggle source
Calls superclass method
# File lib/faraday/utils.rb, line 54 def fetch(k, *args, &block) k = KeyMap[k] key = @names.fetch(k.downcase, k) super(key, *args, &block) end
include?(k)
click to toggle source
# File lib/faraday/utils.rb, line 68 def include?(k) @names.include? k.downcase end
initialize_copy(other)
click to toggle source
on dup/clone, we need to duplicate @names hash
Calls superclass method
# File lib/faraday/utils.rb, line 20 def initialize_copy(other) super @names = other.names.dup end
merge(other)
click to toggle source
# File lib/faraday/utils.rb, line 82 def merge(other) hash = dup hash.merge! other end
merge!(other)
click to toggle source
# File lib/faraday/utils.rb, line 76 def merge!(other) other.each { |k, v| self[k] = v } self end
Also aliased as: update
parse(header_string)
click to toggle source
# File lib/faraday/utils.rb, line 96 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] self[key] << ', ' << value else self[key] = value end } end
replace(other)
click to toggle source
# File lib/faraday/utils.rb, line 87 def replace(other) clear @names.clear self.update other self end
to_hash()
click to toggle source
# File lib/faraday/utils.rb, line 94 def to_hash() ::Hash.new.update(self) end
Protected Instance Methods
names()
click to toggle source
# File lib/faraday/utils.rb, line 113 def names @names end