Class: Rack::Client::Headers
- Inherits:
-
Hash
- Object
- Hash
- Rack::Client::Headers
- Defined in:
- lib/rack/client/core/headers.rb
Class Method Summary collapse
Instance Method Summary collapse
- #clean(header) ⇒ Object
-
#initialize(headers = {}) ⇒ Headers
constructor
A new instance of Headers.
- #rackify(original) ⇒ Object
- #rackish?(header) ⇒ Boolean
- #to_env ⇒ Object
- #to_http ⇒ Object
Constructor Details
#initialize(headers = {}) ⇒ Headers
Returns a new instance of Headers.
8 9 10 11 |
# File 'lib/rack/client/core/headers.rb', line 8 def initialize(headers = {}) super() merge!(headers) end |
Class Method Details
.from(env) ⇒ Object
4 5 6 |
# File 'lib/rack/client/core/headers.rb', line 4 def self.from(env) new env.reject {|(header,_)| header !~ %r'^HTTP_' unless %w( CONTENT_TYPE CONTENT_LENGTH ).include?(header) } end |
Instance Method Details
#clean(header) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/rack/client/core/headers.rb', line 13 def clean(header) header.gsub(/HTTP_/, '').gsub('_', '-').gsub(/(\w+)/) do |matches| matches.downcase.sub(/^./) do |char| char.upcase end end end |
#rackify(original) ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/rack/client/core/headers.rb', line 38 def rackify(original) header = original.upcase.gsub('-', '_') case header when 'CONTENT_TYPE', 'CONTENT_LENGTH' then header when /^HTTP_/ then header else "HTTP_#{header}" end end |
#rackish?(header) ⇒ Boolean
29 30 31 32 33 34 35 36 |
# File 'lib/rack/client/core/headers.rb', line 29 def rackish?(header) case header when 'CONTENT_TYPE', 'CONTENT_LENGTH' then true when /^rack[-.]/ then true when /^HTTP_/ then true else false end end |
#to_env ⇒ Object
25 26 27 |
# File 'lib/rack/client/core/headers.rb', line 25 def to_env self.inject({}) {|h,(header,value)| h.update((rackish?(header) ? header : rackify(header)) => value) } end |
#to_http ⇒ Object
21 22 23 |
# File 'lib/rack/client/core/headers.rb', line 21 def to_http self.inject({}) {|h,(header,value)| h.update(clean(header) => Array(value).join("\n")) } end |