Ruby Mechanize wiki (ja) - Mechanize::Headers

Mechanize::Headers


ページ取得時にサーバが返した HTTP レスポンスヘッダを、小文字キーの Hash で保持しているクラスです。
Mechanize::Page#response または Mechanize::File#response で使用されています。
Hash を継承しており、#[] メソッドや #[]= メソッドでのアクセス時にはキーは大文字でも小文字でも動作するようになっています。
irb> p agent.page.response['Content-Type']
"text/html"
irb> p agent.page.response['content-type']
"text/html"

Mechanize1.0.0 の時点では、リクエストヘッダ(に追加するヘッダデータの Hash)はこのクラスの管理外にあります。小文字キーのヘッダでも動作するかどうかは各メソッドの解説を参照してください。


Mechanize::Headers.new

Mechanize::Headers オブジェクトを生成します。ユーザーが使用することはあまりありません。
Hash を継承しているので、Hash[h] や Hash[key1, value1, ...] という生成動作が可能なのですが、これで生成した Headers オブジェクトのヘッダ名は自動で小文字に変換されることはありません。Mechanize 内部ではレスポンスヘッダ名は小文字であることを期待しているので、引数のキーに相当する部分は必ず小文字で指定するか、空の Headers に対して #[]= で登録を行ってください。

[](name)

このヘッダの中から、name に対応する値を文字列で返します。
存在しなかった場合は nil を返します。返る値は、ヘッダ上は数値であっても文字列になります。
引数の name は文字列で、大文字であっても小文字であっても動作します。Hash のように指定することを期待しており、response[name] のように使用します。
たとえば Content-Type: text/html というヘッダが存在した場合、response['Content-Type'] でも reponse['content-type'] でも "text/html" という文字列が返ります。

[]=(name. value)

このオブジェクトにヘッダ名と値のペアを登録します。value が返ります。
name と value はどちらも文字列です。
name は大文字であっても小文字であっても動作します。Hash のように指定することを期待しており、headers[name] = value のように使用します。
たとえば Content-Type: text/html というヘッダを登録したい場合、response['Content-Type'] = 'text/html' でも response['content-type'] = 'text/html' でも {"content-type" => "text/html"} という登録結果になります。