Class: HTTP::Headers

### Home Classes Methods

### In Files

- lib/http/headers.rb
- lib/http/headers/known.rb
- lib/http/headers/mixin.rb

### Parent

Object

### Namespace

- MODULE HTTP::Headers::Mixin

### Methods

- ::[]
- ::coerce
- ::new
- #==
- #[]
- #[]=
- #add
- #append
- #delete
- #each
- #get
- #initialize_copy
- #inspect
- #keys
- #merge
- #merge!
- #set
- #to_a
- #to_h
- #to_hash

### Included Modules

- Enumerable

### Class/Module Index

Quicksearch

- HTTP
- HTTP::Cache
- HTTP::Cache::Headers
- HTTP::Cache::NullCache
- HTTP::Cache::NullLogger
- HTTP::CacheError
- HTTP::Chainable
- HTTP::Client
- HTTP::Connection
- HTTP::Error
- HTTP::Headers
- HTTP::Headers::Mixin
- HTTP::InvalidHeaderNameError
- HTTP::MimeType
- HTTP::MimeType::Adapter
- HTTP::MimeType::JSON
- HTTP::Options
- HTTP::Redirector
- HTTP::Redirector::EndlessRedirectError
- HTTP::Redirector::TooManyRedirectsError
- HTTP::Request
- HTTP::Request::Caching
- HTTP::Request::UnsupportedMethodError
- HTTP::Request::UnsupportedSchemeError
- HTTP::Request::Writer
- HTTP::RequestError
- HTTP::Response
- HTTP::Response::Body
- HTTP::Response::Caching
- HTTP::Response::IoBody
- HTTP::Response::Parser
- HTTP::Response::Status
- HTTP::Response::StringBody
- HTTP::ResponseError
- HTTP::StateError
- HTTP::Timeout
- HTTP::Timeout::Global
- HTTP::Timeout::Null
- HTTP::Timeout::PerOperation
- HTTP::TimeoutError
- HTTP::URI
- Object

No matching classes.

# HTTP::Headers

HTTP Headers container.

### Constants

ACCEPT

  Content-Types that are acceptable for the response.

AGE

  The age the object has been in a proxy cache in seconds.

AUTHORIZATION

  Authentication credentials for HTTP authentication.

CACHE_CONTROL

  Used to specify directives that must be obeyed by all caching mechanisms along the request-response chain.

CANONICAL_HEADER

  Matches HTTP header names when in "Canonical-Http-Format"

CONNECTION

  Control options for the current connection and list of hop-by-hop request fields.

CONTENT_LENGTH

  The length of the request body in octets (8-bit bytes).

CONTENT_TYPE

  The MIME type of the body of the request (used with POST and PUT requests).

COOKIE

  An HTTP cookie previously sent by the server with Set-Cookie.

DATE

  The date and time that the message was sent (in "HTTP-date" format as defined by RFC 7231 Date/Time Formats).

ETAG

  An identifier for a specific version of a resource, often a message digest.

EXPIRES

  Gives the date/time after which the response is considered stale (in "HTTP-date" format as defined by RFC 7231).

HEADER_NAME_RE

  Matches valid header field name according to RFC. @see tools.ietf.org/html/rfc7230#section-3.2

HOST

  The domain name of the server (for virtual hosting), and the TCP port number on which the server is listening. The port number may be omitted if the port is the standard port for the service requested.

IF_MODIFIED_SINCE

  Allows a 304 Not Modified to be returned if content is unchanged.

IF_NONE_MATCH

  Allows a 304 Not Modified to be returned if content is unchanged.

LAST_MODIFIED

  The last modified date for the requested object (in "HTTP-date" format as defined by RFC 7231).

LOCATION

  Used in redirection, or when a new resource has been created.

PROXY_AUTHORIZATION

  Authorization credentials for connecting to a proxy.

SET_COOKIE

  An HTTP cookie.

TRANSFER_ENCODING

  The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity.

USER_AGENT

  The user agent string of the user agent.

VARY

  Tells downstream proxies how to match future request headers to decide whether the cached response can be used rather than requesting a fresh one from the origin server.

### Public Class Methods

[](object) click to toggle source
Alias for: coerce
coerce(object) click to toggle source

Coerces given `object` into Headers.

@raise [Error] if object can't be coerced @param [to_hash, to_h, to_a] object @return [Headers]

    # File lib/http/headers.rb, line 171
    def coerce(object)
      unless object.is_a? self
        object = case
                 when object.respond_to?(:to_hash) then object.to_hash
                 when object.respond_to?(:to_h)    then object.to_h
                 when object.respond_to?(:to_a)    then object.to_a
                 else fail Error, "Can't coerce #{object.inspect} to Headers"
                 end
      end

      headers = new
      object.each { |k, v| headers.add k, v }
      headers
    end

Also aliased as: []
new() click to toggle source

Class constructor.

    # File lib/http/headers.rb, line 21
    def initialize
      @pile = []
    end

### Public Instance Methods

==(other) click to toggle source

Compares headers to another Headers or Array of key/value pairs

@return [Boolean]

    # File lib/http/headers.rb, line 112
    def ==(other)
      return false unless other.respond_to? :to_a
      @pile == other.to_a
    end

[](name) click to toggle source

Smart version of {get}.

@return [nil] if header was not set @return [String] if header has exactly one value @return [Array<String>] if header has more than one value

    # File lib/http/headers.rb, line 70
    def [](name)
      values = get(name)

      case values.count
      when 0 then nil
      when 1 then values.first
      else        values
      end
    end

[]=(name, value) click to toggle source
Alias for: set
add(name, value) click to toggle source

Appends header.

@param [to_s] name header name @param [Array<to_s>, to_s] value header value(s) to be appended @return [void]

    # File lib/http/headers.rb, line 49
    def add(name, value)
      name  = normalize_header name.to_s
      Array(value).each { |v| @pile << [name, v.to_s] }
    end

Also aliased as: append
append(name, value) click to toggle source

@deprecated Will be removed in 1.0.0

Alias for: add
delete(name) click to toggle source

Removes header.

@param [to_s] name header name @return [void]

    # File lib/http/headers.rb, line 39
    def delete(name)
      name = normalize_header name.to_s
      @pile.delete_if { |k, _| k == name }
    end

each() click to toggle source

Calls the given block once for each key/value pair in headers container.

@return [Enumerator] if no block given @return [Headers] self-reference

    # File lib/http/headers.rb, line 121
    def each
      return to_enum(__method__) unless block_given?
      @pile.each { |arr| yield(arr) }
      self
    end

get(name) click to toggle source

Returns list of header values if any.

@return [Array<String>]

    # File lib/http/headers.rb, line 60
    def get(name)
      name = normalize_header name.to_s
      @pile.select { |k, _| k == name }.map { |_, v| v }
    end

initialize_copy(orig) click to toggle source

Properly clones internal key/value storage.

@api private

    # File lib/http/headers.rb, line 144
    def initialize_copy(orig)
      super
      @pile = to_a
    end

inspect() click to toggle source

Returns human-readable representation of `self` instance.

@return [String]

    # File lib/http/headers.rb, line 98
    def inspect
      "#<#{self.class} #{to_h.inspect}>"
    end

keys() click to toggle source

Returns list of header names.

@return [Array<String>]

    # File lib/http/headers.rb, line 105
    def keys
      @pile.map { |k, _| k }.uniq
    end

merge(other) click to toggle source

Returns new instance with `other` headers merged in.

@see merge! @return [Headers]

    # File lib/http/headers.rb, line 161
    def merge(other)
      dup.tap { |dupped| dupped.merge! other }
    end

merge!(other) click to toggle source

Merges `other` headers into `self`.

@see merge @return [void]

    # File lib/http/headers.rb, line 153
    def merge!(other)
      self.class.coerce(other).to_h.each { |name, values| set name, values }
    end

set(name, value) click to toggle source

Sets header.

@param (see add) @return [void]

    # File lib/http/headers.rb, line 29
    def set(name, value)
      delete(name)
      add(name, value)
    end

Also aliased as: []=
to_a() click to toggle source

Returns headers key/value pairs.

@return [Array<[String, String]>]

    # File lib/http/headers.rb, line 91
    def to_a
      @pile.map { |pair| pair.map(&:dup) }
    end

to_h() click to toggle source

Returns Rack-compatible headers Hash

@return [Hash]

    # File lib/http/headers.rb, line 83
    def to_h
      Hash[keys.map { |k| [k, self[k]] }]
    end

Also aliased as: to_hash
to_hash() click to toggle source
Alias for: to_h

[Validate]

Generated with the Darkfish Rdoc Generator 2.