Class: Webmachine::Headers

Inherits:
Hash
  • Object
show all
Defined in:
lib/webmachine/headers.rb

Overview

Case-insensitive Hash of Request headers

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](key, value, ...) ⇒ Webmachine::Headers .[](array) ⇒ Webmachine::Headers .[](object) ⇒ Webmachine::Headers

Creates a new headers object populated with the given objects. It supports the same forms as Hash.[].

Overloads:

  • .[](key, value, ...) ⇒ Webmachine::Headers

    Pairs of keys and values

    Parameters:

    • key (Object)
    • value (Object)
  • .[](array) ⇒ Webmachine::Headers

    Array of key-value pairs

    Parameters:

    • (Array<Object, Object>, ...)
  • .[](object) ⇒ Webmachine::Headers

    Object convertible to a hash

    Parameters:

    • (Object)

Returns:



30
31
32
# File 'lib/webmachine/headers.rb', line 30

def self.[](*args)
  super(super(*args).map {|k, v| [k.to_s.downcase, v]})
end

.from_cgi(env) ⇒ Webmachine::Headers

Convert CGI-style Hash into Request headers

Parameters:

  • env (Hash)

    a hash of CGI-style env/headers

Returns:



7
8
9
10
11
12
13
14
# File 'lib/webmachine/headers.rb', line 7

def self.from_cgi(env)
  env.inject(new) do |h,(k,v)|
    if k =~ /^HTTP_(\w+)$/ || k =~ /^(CONTENT_(?:TYPE|LENGTH))$/
      h[$1.tr("_", "-")] = v
    end
    h
  end
end

Instance Method Details

#[](key) ⇒ Object

Fetch a header



35
36
37
# File 'lib/webmachine/headers.rb', line 35

def [](key)
  super transform_key(key)
end

#[]=(key, value) ⇒ Object

Set a header



40
41
42
# File 'lib/webmachine/headers.rb', line 40

def []=(key,value)
  super transform_key(key), value
end

#delete(key) ⇒ Object

Delete a header



68
69
70
# File 'lib/webmachine/headers.rb', line 68

def delete(key)
  super transform_key(key)
end

#fetch(key) ⇒ Object #fetch(key, default) ⇒ Object #fetch(key) {|key| ... } ⇒ Object

Returns the value for the given key. If the key can’t be found, there are several options: With no other arguments, it will raise a KeyError exception; if default is given, then that will be returned; if the optional code block is specified, then that will be run and its result returned.

Overloads:

  • #fetch(key) ⇒ Object

    A key

    Parameters:

    • key (Object)
  • #fetch(key, default) ⇒ Object

    A key and a default value

    Parameters:

    • key (Object)
    • default (Object)
  • #fetch(key) {|key| ... } ⇒ Object

    A key and a code block

    Parameters:

    • (Object)

    Yields:

    • (key)

      Passes the key to the block

Returns:

  • (Object)

    the value for the key or the default



63
64
65
# File 'lib/webmachine/headers.rb', line 63

def fetch(*args, &block)
  super(transform_key(args.shift), *args, &block)
end

#grep(pattern) ⇒ Object

Select matching headers



73
74
75
# File 'lib/webmachine/headers.rb', line 73

def grep(pattern)
  self.class[select { |k,_| pattern === k }]
end