File: C:/Ruby27-x64/share/doc/ruby/html/Net/HTTPHeader.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module Net::HTTPHeader - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-5B-5D">#[]</a>
<li ><a href="#method-i-5B-5D-3D">#[]=</a>
<li ><a href="#method-i-add_field">#add_field</a>
<li ><a href="#method-i-append_field_value">#append_field_value</a>
<li ><a href="#method-i-basic_auth">#basic_auth</a>
<li ><a href="#method-i-basic_encode">#basic_encode</a>
<li ><a href="#method-i-canonical_each">#canonical_each</a>
<li ><a href="#method-i-capitalize">#capitalize</a>
<li ><a href="#method-i-chunked-3F">#chunked?</a>
<li ><a href="#method-i-connection_close-3F">#connection_close?</a>
<li ><a href="#method-i-connection_keep_alive-3F">#connection_keep_alive?</a>
<li ><a href="#method-i-content_length">#content_length</a>
<li ><a href="#method-i-content_length-3D">#content_length=</a>
<li ><a href="#method-i-content_range">#content_range</a>
<li ><a href="#method-i-content_type">#content_type</a>
<li ><a href="#method-i-content_type-3D">#content_type=</a>
<li ><a href="#method-i-delete">#delete</a>
<li ><a href="#method-i-each">#each</a>
<li ><a href="#method-i-each_capitalized">#each_capitalized</a>
<li ><a href="#method-i-each_capitalized_name">#each_capitalized_name</a>
<li ><a href="#method-i-each_header">#each_header</a>
<li ><a href="#method-i-each_key">#each_key</a>
<li ><a href="#method-i-each_name">#each_name</a>
<li ><a href="#method-i-each_value">#each_value</a>
<li ><a href="#method-i-fetch">#fetch</a>
<li ><a href="#method-i-form_data-3D">#form_data=</a>
<li ><a href="#method-i-get_fields">#get_fields</a>
<li ><a href="#method-i-initialize_http_header">#initialize_http_header</a>
<li ><a href="#method-i-key-3F">#key?</a>
<li ><a href="#method-i-main_type">#main_type</a>
<li ><a href="#method-i-proxy_basic_auth">#proxy_basic_auth</a>
<li ><a href="#method-i-range">#range</a>
<li ><a href="#method-i-range-3D">#range=</a>
<li ><a href="#method-i-range_length">#range_length</a>
<li ><a href="#method-i-set_content_type">#set_content_type</a>
<li ><a href="#method-i-set_field">#set_field</a>
<li ><a href="#method-i-set_form">#set_form</a>
<li ><a href="#method-i-set_form_data">#set_form_data</a>
<li ><a href="#method-i-set_range">#set_range</a>
<li ><a href="#method-i-sub_type">#sub_type</a>
<li ><a href="#method-i-to_hash">#to_hash</a>
<li ><a href="#method-i-type_params">#type_params</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-Net::HTTPHeader">
<h1 id="module-Net::HTTPHeader" class="module">
module Net::HTTPHeader
</h1>
<section class="description">
<p>The <a href="HTTPHeader.html"><code>HTTPHeader</code></a> module defines methods for reading and writing <a href="HTTP.html"><code>HTTP</code></a> headers.</p>
<p>It is used as a mixin by other classes, to provide hash-like access to <a href="HTTP.html"><code>HTTP</code></a> header values. Unlike raw hash access, <a href="HTTPHeader.html"><code>HTTPHeader</code></a> provides access via case-insensitive keys. It also provides methods for accessing commonly-used <a href="HTTP.html"><code>HTTP</code></a> header values in more convenient formats.</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-5B-5D" class="method-detail ">
<div class="method-heading">
<span class="method-name">[]</span><span
class="method-args">(key)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the header field corresponding to the case-insensitive key. For example, a key of “Content-Type” might return “text/html”</p>
<div class="method-source-code" id="5B-5D-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 38</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]</span>(<span class="ruby-identifier">key</span>)
<span class="ruby-identifier">a</span> = <span class="ruby-ivar">@header</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-keyword">or</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">a</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">', '</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-5B-5D-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">[]=</span><span
class="method-args">(key, val)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets the header field corresponding to the case-insensitive key.</p>
<div class="method-source-code" id="5B-5D-3D-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 44</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]=</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">val</span>
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">delete</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">set_field</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-add_field" class="method-detail ">
<div class="method-heading">
<span class="method-name">add_field</span><span
class="method-args">(key, val)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<dl class="rdoc-list label-list"><dt>Ruby 1.8.3
<dd>
<p>Adds a value to a named header field, instead of replacing its value. Second argument <code>val</code> must be a <a href="../String.html"><code>String</code></a>. See also <a href="HTTPHeader.html#method-i-5B-5D-3D"><code>[]=</code></a>, <a href="HTTPHeader.html#method-i-5B-5D"><code>[]</code></a> and <a href="HTTPHeader.html#method-i-get_fields"><code>get_fields</code></a>.</p>
<pre class="ruby"><span class="ruby-identifier">request</span>.<span class="ruby-identifier">add_field</span> <span class="ruby-string">'X-My-Header'</span>, <span class="ruby-string">'a'</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>[<span class="ruby-string">'X-My-Header'</span>] <span class="ruby-comment">#=> "a"</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">get_fields</span>(<span class="ruby-string">'X-My-Header'</span>) <span class="ruby-comment">#=> ["a"]</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">add_field</span> <span class="ruby-string">'X-My-Header'</span>, <span class="ruby-string">'b'</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>[<span class="ruby-string">'X-My-Header'</span>] <span class="ruby-comment">#=> "a, b"</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">get_fields</span>(<span class="ruby-string">'X-My-Header'</span>) <span class="ruby-comment">#=> ["a", "b"]</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">add_field</span> <span class="ruby-string">'X-My-Header'</span>, <span class="ruby-string">'c'</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>[<span class="ruby-string">'X-My-Header'</span>] <span class="ruby-comment">#=> "a, b, c"</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">get_fields</span>(<span class="ruby-string">'X-My-Header'</span>) <span class="ruby-comment">#=> ["a", "b", "c"]</span>
</pre>
</dd></dl>
<div class="method-source-code" id="add_field-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 67</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">add_field</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>)
<span class="ruby-identifier">stringified_downcased_key</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">stringified_downcased_key</span>)
<span class="ruby-identifier">append_field_value</span>(<span class="ruby-ivar">@header</span>[<span class="ruby-identifier">stringified_downcased_key</span>], <span class="ruby-identifier">val</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">set_field</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-basic_auth" class="method-detail ">
<div class="method-heading">
<span class="method-name">basic_auth</span><span
class="method-args">(account, password)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="../Set.html"><code>Set</code></a> the Authorization: header for “Basic” authorization.</p>
<div class="method-source-code" id="basic_auth-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 468</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">basic_auth</span>(<span class="ruby-identifier">account</span>, <span class="ruby-identifier">password</span>)
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'authorization'</span>] = [<span class="ruby-identifier">basic_encode</span>(<span class="ruby-identifier">account</span>, <span class="ruby-identifier">password</span>)]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-canonical_each" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">canonical_each</span><span
class="method-args">()</span>
</div>
<div class="method-description">
</div>
<div class="aliases">
Alias for: <a href="HTTPHeader.html#method-i-each_capitalized">each_capitalized</a>
</div>
</div>
<div id="method-i-chunked-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">chunked?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns “true” if the “transfer-encoding” header is present and set to “chunked”. This is an HTTP/1.1 feature, allowing the content to be sent in “chunks” without at the outset stating the entire content length.</p>
<div class="method-source-code" id="chunked-3F-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 329</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">chunked?</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@header</span>[<span class="ruby-string">'transfer-encoding'</span>]
<span class="ruby-identifier">field</span> = <span class="ruby-keyword">self</span>[<span class="ruby-string">'Transfer-Encoding'</span>]
(<span class="ruby-regexp">/(?:\A|[^\-\w])chunked(?![\-\w])/i</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">field</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-connection_close-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">connection_close?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="connection_close-3F-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 482</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">connection_close?</span>
<span class="ruby-identifier">token</span> = <span class="ruby-regexp">/(?:\A|,)\s*close\s*(?:\z|,)/i</span>
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'connection'</span>]&.<span class="ruby-identifier">grep</span>(<span class="ruby-identifier">token</span>) {<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>}
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'proxy-connection'</span>]&.<span class="ruby-identifier">grep</span>(<span class="ruby-identifier">token</span>) {<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>}
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-connection_keep_alive-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">connection_keep_alive?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="connection_keep_alive-3F-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 489</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">connection_keep_alive?</span>
<span class="ruby-identifier">token</span> = <span class="ruby-regexp">/(?:\A|,)\s*keep-alive\s*(?:\z|,)/i</span>
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'connection'</span>]&.<span class="ruby-identifier">grep</span>(<span class="ruby-identifier">token</span>) {<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>}
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'proxy-connection'</span>]&.<span class="ruby-identifier">grep</span>(<span class="ruby-identifier">token</span>) {<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>}
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-content_length" class="method-detail ">
<div class="method-heading">
<span class="method-name">content_length</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns an <a href="../Integer.html"><code>Integer</code></a> object which represents the <a href="HTTP.html"><code>HTTP</code></a> Content-Length: header field, or <code>nil</code> if that field was not provided.</p>
<div class="method-source-code" id="content_length-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 310</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">content_length</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">key?</span>(<span class="ruby-string">'Content-Length'</span>)
<span class="ruby-identifier">len</span> = <span class="ruby-keyword">self</span>[<span class="ruby-string">'Content-Length'</span>].<span class="ruby-identifier">slice</span>(<span class="ruby-regexp">/\d+/</span>) <span class="ruby-keyword">or</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-string">'wrong Content-Length format'</span>
<span class="ruby-identifier">len</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-content_length-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">content_length=</span><span
class="method-args">(len)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="content_length-3D-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 317</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">content_length=</span>(<span class="ruby-identifier">len</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">len</span>
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'content-length'</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'content-length'</span>] = [<span class="ruby-identifier">len</span>.<span class="ruby-identifier">to_i</span>.<span class="ruby-identifier">to_s</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-content_range" class="method-detail ">
<div class="method-heading">
<span class="method-name">content_range</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a <a href="../Range.html"><code>Range</code></a> object which represents the value of the Content-Range: header field. For a partial entity body, this indicates where this fragment fits inside the full entity body, as range of byte offsets.</p>
<div class="method-source-code" id="content_range-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 339</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">content_range</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@header</span>[<span class="ruby-string">'content-range'</span>]
<span class="ruby-identifier">m</span> = <span class="ruby-regexp">%r<bytes\s+(\d+)-(\d+)/(\d+|\*)>i</span>.<span class="ruby-identifier">match</span>(<span class="ruby-keyword">self</span>[<span class="ruby-string">'Content-Range'</span>]) <span class="ruby-keyword">or</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-string">'wrong Content-Range format'</span>
<span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">..</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-content_type" class="method-detail ">
<div class="method-heading">
<span class="method-name">content_type</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a content type string such as “text/html”. This method returns nil if Content-Type: header field does not exist.</p>
<div class="method-source-code" id="content_type-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 354</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">content_type</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">main_type</span>()
<span class="ruby-keyword">if</span> <span class="ruby-identifier">sub_type</span>()
<span class="ruby-keyword">then</span> <span class="ruby-node">"#{main_type()}/#{sub_type()}"</span>
<span class="ruby-keyword">else</span> <span class="ruby-identifier">main_type</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-content_type-3D" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">content_type=</span><span
class="method-args">(type, params = {})</span>
</div>
<div class="method-description">
</div>
<div class="aliases">
Alias for: <a href="HTTPHeader.html#method-i-set_content_type">set_content_type</a>
</div>
</div>
<div id="method-i-delete" class="method-detail ">
<div class="method-heading">
<span class="method-name">delete</span><span
class="method-args">(key)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Removes a header field, specified by case-insensitive key.</p>
<div class="method-source-code" id="delete-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 186</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">delete</span>(<span class="ruby-identifier">key</span>)
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-each" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">each</span><span
class="method-args">()</span>
</div>
<div class="method-description">
</div>
<div class="aliases">
Alias for: <a href="HTTPHeader.html#method-i-each_header">each_header</a>
</div>
</div>
<div id="method-i-each_capitalized" class="method-detail ">
<div class="method-heading">
<span class="method-name">each_capitalized</span><span
class="method-args">() { |capitalize(k), join(', ')| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>As for <a href="HTTPHeader.html#method-i-each_header"><code>each_header</code></a>, except the keys are provided in capitalized form.</p>
<p>Note that header names are capitalized systematically; capitalization may not match that used by the remote <a href="HTTP.html"><code>HTTP</code></a> server in its response.</p>
<p>Returns an enumerator if no block is given.</p>
<div class="method-source-code" id="each_capitalized-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 211</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">each_capitalized</span>
<span class="ruby-identifier">block_given?</span> <span class="ruby-keyword">or</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">enum_for</span>(<span class="ruby-identifier">__method__</span>) { <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">size</span> }
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">capitalize</span>(<span class="ruby-identifier">k</span>), <span class="ruby-identifier">v</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">', '</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="HTTPHeader.html#method-i-canonical_each">canonical_each</a>
</div>
</div>
<div id="method-i-each_capitalized_name" class="method-detail ">
<div class="method-heading">
<span class="method-name">each_capitalized_name</span><span
class="method-args">() { |key| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Iterates through the header names in the header, passing capitalized header names to the code block.</p>
<p>Note that header names are capitalized systematically; capitalization may not match that used by the remote <a href="HTTP.html"><code>HTTP</code></a> server in its response.</p>
<p>Returns an enumerator if no block is given.</p>
<div class="method-source-code" id="each_capitalized_name-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 167</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">each_capitalized_name</span> <span class="ruby-comment">#:yield: +key+</span>
<span class="ruby-identifier">block_given?</span> <span class="ruby-keyword">or</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">enum_for</span>(<span class="ruby-identifier">__method__</span>) { <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">size</span> }
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">capitalize</span>(<span class="ruby-identifier">k</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-each_header" class="method-detail ">
<div class="method-heading">
<span class="method-name">each_header</span><span
class="method-args">() { |key| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Iterates through the header names and values, passing in the name and value to the code block supplied.</p>
<p>Returns an enumerator if no block is given.</p>
<p>Example:</p>
<pre class="ruby"><span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">each_header</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">key</span>,<span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-identifier">puts</span> <span class="ruby-node">"#{key} = #{value}"</span> }
</pre>
<div class="method-source-code" id="each_header-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 139</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">each_header</span> <span class="ruby-comment">#:yield: +key+, +value+</span>
<span class="ruby-identifier">block_given?</span> <span class="ruby-keyword">or</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">enum_for</span>(<span class="ruby-identifier">__method__</span>) { <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">size</span> }
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">va</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">k</span>, <span class="ruby-identifier">va</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">', '</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="HTTPHeader.html#method-i-each">each</a>
</div>
</div>
<div id="method-i-each_key" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">each_key</span><span
class="method-args">()</span>
</div>
<div class="method-description">
</div>
<div class="aliases">
Alias for: <a href="HTTPHeader.html#method-i-each_name">each_name</a>
</div>
</div>
<div id="method-i-each_name" class="method-detail ">
<div class="method-heading">
<span class="method-name">each_name</span><span
class="method-args">() { |key| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Iterates through the header names in the header, passing each header name to the code block.</p>
<p>Returns an enumerator if no block is given.</p>
<div class="method-source-code" id="each_name-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 152</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">each_name</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>) <span class="ruby-comment">#:yield: +key+</span>
<span class="ruby-identifier">block_given?</span> <span class="ruby-keyword">or</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">enum_for</span>(<span class="ruby-identifier">__method__</span>) { <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">size</span> }
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">each_key</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="HTTPHeader.html#method-i-each_key">each_key</a>
</div>
</div>
<div id="method-i-each_value" class="method-detail ">
<div class="method-heading">
<span class="method-name">each_value</span><span
class="method-args">() { |value| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Iterates through header values, passing each value to the code block.</p>
<p>Returns an enumerator if no block is given.</p>
<div class="method-source-code" id="each_value-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 178</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">each_value</span> <span class="ruby-comment">#:yield: +value+</span>
<span class="ruby-identifier">block_given?</span> <span class="ruby-keyword">or</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">enum_for</span>(<span class="ruby-identifier">__method__</span>) { <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">size</span> }
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">va</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">va</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">', '</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-fetch" class="method-detail ">
<div class="method-heading">
<span class="method-name">fetch</span><span
class="method-args">(key, *args) { |key| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the header field corresponding to the case-insensitive key. Returns the default value <code>args</code>, or the result of the block, or raises an <a href="../IndexError.html"><code>IndexError</code></a> if there's no header field named <code>key</code> See <a href="../Hash.html#method-i-fetch"><code>Hash#fetch</code></a></p>
<div class="method-source-code" id="fetch-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 125</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">fetch</span>(<span class="ruby-identifier">key</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>) <span class="ruby-comment">#:yield: +key+</span>
<span class="ruby-identifier">a</span> = <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">a</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">', '</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">a</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-form_data-3D" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">form_data=</span><span
class="method-args">(params, sep = '&')</span>
</div>
<div class="method-description">
</div>
<div class="aliases">
Alias for: <a href="HTTPHeader.html#method-i-set_form_data">set_form_data</a>
</div>
</div>
<div id="method-i-get_fields" class="method-detail ">
<div class="method-heading">
<span class="method-name">get_fields</span><span
class="method-args">(key)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<dl class="rdoc-list label-list"><dt>Ruby 1.8.3
<dd>
<p>Returns an array of header field strings corresponding to the case-insensitive <code>key</code>. This method allows you to get duplicated header fields without any processing. See also <a href="HTTPHeader.html#method-i-5B-5D"><code>[]</code></a>.</p>
<pre>p response.get_fields('Set-Cookie')
#=> ["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23",
"query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"]
p response['Set-Cookie']
#=> "session=al98axx; expires=Fri, 31-Dec-1999 23:58:23, query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"</pre>
</dd></dl>
<div class="method-source-code" id="get_fields-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 115</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_fields</span>(<span class="ruby-identifier">key</span>)
<span class="ruby-identifier">stringified_downcased_key</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@header</span>[<span class="ruby-identifier">stringified_downcased_key</span>]
<span class="ruby-ivar">@header</span>[<span class="ruby-identifier">stringified_downcased_key</span>].<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-initialize_http_header" class="method-detail ">
<div class="method-heading">
<span class="method-name">initialize_http_header</span><span
class="method-args">(initheader)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="initialize_http_header-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 13</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize_http_header</span>(<span class="ruby-identifier">initheader</span>)
<span class="ruby-ivar">@header</span> = {}
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">initheader</span>
<span class="ruby-identifier">initheader</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">warn</span> <span class="ruby-node">"net/http: duplicated HTTP header: #{key}"</span>, <span class="ruby-value">uplevel:</span> <span class="ruby-value">3</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>) <span class="ruby-keyword">and</span> <span class="ruby-identifier">$VERBOSE</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-identifier">warn</span> <span class="ruby-node">"net/http: nil HTTP header: #{key}"</span>, <span class="ruby-value">uplevel:</span> <span class="ruby-value">3</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$VERBOSE</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">value</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">strip</span> <span class="ruby-comment"># raise error for invalid byte sequences</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">count</span>(<span class="ruby-string">"\r\n"</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"header #{key} has field value #{value.inspect}, this cannot include CR/LF"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@header</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>] = [<span class="ruby-identifier">value</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-key-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">key?</span><span
class="method-args">(key)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>true if <code>key</code> header exists.</p>
<div class="method-source-code" id="key-3F-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 191</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">key?</span>(<span class="ruby-identifier">key</span>)
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-main_type" class="method-detail ">
<div class="method-heading">
<span class="method-name">main_type</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a content type string such as “text”. This method returns nil if Content-Type: header field does not exist.</p>
<div class="method-source-code" id="main_type-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 364</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">main_type</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@header</span>[<span class="ruby-string">'content-type'</span>]
<span class="ruby-keyword">self</span>[<span class="ruby-string">'Content-Type'</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">';'</span>).<span class="ruby-identifier">first</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">'/'</span>)[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">strip</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-proxy_basic_auth" class="method-detail ">
<div class="method-heading">
<span class="method-name">proxy_basic_auth</span><span
class="method-args">(account, password)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="../Set.html"><code>Set</code></a> Proxy-Authorization: header for “Basic” authorization.</p>
<div class="method-source-code" id="proxy_basic_auth-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 473</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">proxy_basic_auth</span>(<span class="ruby-identifier">account</span>, <span class="ruby-identifier">password</span>)
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'proxy-authorization'</span>] = [<span class="ruby-identifier">basic_encode</span>(<span class="ruby-identifier">account</span>, <span class="ruby-identifier">password</span>)]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-range" class="method-detail ">
<div class="method-heading">
<span class="method-name">range</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns an <a href="../Array.html"><code>Array</code></a> of <a href="../Range.html"><code>Range</code></a> objects which represent the Range: <a href="HTTP.html"><code>HTTP</code></a> header field, or <code>nil</code> if there is no such header.</p>
<div class="method-source-code" id="range-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 227</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">range</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@header</span>[<span class="ruby-string">'range'</span>]
<span class="ruby-identifier">value</span> = <span class="ruby-keyword">self</span>[<span class="ruby-string">'Range'</span>]
<span class="ruby-comment"># byte-range-set = *( "," OWS ) ( byte-range-spec / suffix-byte-range-spec )</span>
<span class="ruby-comment"># *( OWS "," [ OWS ( byte-range-spec / suffix-byte-range-spec ) ] )</span>
<span class="ruby-comment"># corrected collected ABNF</span>
<span class="ruby-comment"># http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-19#section-5.4.1</span>
<span class="ruby-comment"># http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-19#appendix-C</span>
<span class="ruby-comment"># http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-19#section-3.2.5</span>
<span class="ruby-keyword">unless</span> <span class="ruby-regexp">/\Abytes=((?:,[ \t]*)*(?:\d+-\d*|-\d+)(?:[ \t]*,(?:[ \t]*\d+-\d*|-\d+)?)*)\z/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">value</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-node">"invalid syntax for byte-ranges-specifier: '#{value}'"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">byte_range_set</span> = <span class="ruby-node">$1</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">byte_range_set</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/,/</span>).<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">m</span> = <span class="ruby-regexp">/(\d+)?\s*-\s*(\d+)?/i</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-keyword">or</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-node">"invalid byte-range-spec: '#{spec}'"</span>
<span class="ruby-identifier">d1</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-identifier">d2</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-keyword">and</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">d1</span> <span class="ruby-operator">></span> <span class="ruby-identifier">d2</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-node">"last-byte-pos MUST greater than or equal to first-byte-pos but '#{spec}'"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">d1</span><span class="ruby-operator">..</span><span class="ruby-identifier">d2</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>]
<span class="ruby-identifier">d1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>]
<span class="ruby-operator">-</span><span class="ruby-identifier">d2</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-string">'range is not specified'</span>
<span class="ruby-keyword">end</span>
}
<span class="ruby-comment"># if result.empty?</span>
<span class="ruby-comment"># byte-range-set must include at least one byte-range-spec or suffix-byte-range-spec</span>
<span class="ruby-comment"># but above regexp already denies it.</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">begin</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">end</span> <span class="ruby-operator">==</span> <span class="ruby-value">-1</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-string">'only one suffix-byte-range-spec with zero suffix-length'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-range-3D" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">range=</span><span
class="method-args">(r, e = nil)</span>
</div>
<div class="method-description">
</div>
<div class="aliases">
Alias for: <a href="HTTPHeader.html#method-i-set_range">set_range</a>
</div>
</div>
<div id="method-i-range_length" class="method-detail ">
<div class="method-heading">
<span class="method-name">range_length</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The length of the range represented in Content-Range: header.</p>
<div class="method-source-code" id="range_length-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 347</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">range_length</span>
<span class="ruby-identifier">r</span> = <span class="ruby-identifier">content_range</span>() <span class="ruby-keyword">or</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">r</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">begin</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-set_content_type" class="method-detail ">
<div class="method-heading">
<span class="method-name">set_content_type</span><span
class="method-args">(type, params = {})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets the content type in an <a href="HTTP.html"><code>HTTP</code></a> header. The <code>type</code> should be a full <a href="HTTP.html"><code>HTTP</code></a> content type, e.g. “text/html”. The <code>params</code> are an optional <a href="../Hash.html"><code>Hash</code></a> of parameters to add after the content type, e.g. {'charset' => 'iso-8859-1'}</p>
<div class="method-source-code" id="set_content_type-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 397</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">set_content_type</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">params</span> = {})
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'content-type'</span>] = [<span class="ruby-identifier">type</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span><span class="ruby-node">"; #{k}=#{v}"</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">''</span>)]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="HTTPHeader.html#method-i-content_type-3D">content_type=</a>
</div>
</div>
<div id="method-i-set_form" class="method-detail ">
<div class="method-heading">
<span class="method-name">set_form</span><span
class="method-args">(params, enctype='application/x-www-form-urlencoded', formopt={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="../Set.html"><code>Set</code></a> an HTML form data set. <code>params</code> is the form data set; it is an <a href="../Array.html"><code>Array</code></a> of Arrays or a <a href="../Hash.html"><code>Hash</code></a> +enctype is the type to encode the form data set. It is application/x-www-form-urlencoded or multipart/form-data. <code>formopt</code> is an optional hash to specify the detail.</p>
<dl class="rdoc-list note-list"><dt>boundary
<dd>
<p>the boundary of the multipart message</p>
</dd><dt>charset
<dd>
<p>the charset of the message. All names and the values of non-file fields are encoded as the charset.</p>
</dd></dl>
<p>Each item of params is an array and contains following items:</p>
<dl class="rdoc-list note-list"><dt><code>name</code>
<dd>
<p>the name of the field</p>
</dd><dt><code>value</code>
<dd>
<p>the value of the field, it should be a <a href="../String.html"><code>String</code></a> or a <a href="../File.html"><code>File</code></a></p>
</dd><dt><code>opt</code>
<dd>
<p>an optional hash to specify additional information</p>
</dd></dl>
<p>Each item is a file field or a normal field. If <code>value</code> is a <a href="../File.html"><code>File</code></a> object or the <code>opt</code> have a filename key, the item is treated as a file field.</p>
<p>If Transfer-Encoding is set as chunked, this send the request in chunked encoding. Because chunked encoding is HTTP/1.1 feature, you must confirm the server to support HTTP/1.1 before sending it.</p>
<p>Example:</p>
<pre class="ruby"><span class="ruby-identifier">http</span>.<span class="ruby-identifier">set_form</span>([[<span class="ruby-string">"q"</span>, <span class="ruby-string">"ruby"</span>], [<span class="ruby-string">"lang"</span>, <span class="ruby-string">"en"</span>]])
</pre>
<p>See also RFC 2388, RFC 2616, HTML 4.01, and HTML5</p>
<div class="method-source-code" id="set_form-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 453</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">set_form</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">enctype</span>=<span class="ruby-string">'application/x-www-form-urlencoded'</span>, <span class="ruby-identifier">formopt</span>={})
<span class="ruby-ivar">@body_data</span> = <span class="ruby-identifier">params</span>
<span class="ruby-ivar">@body</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@body_stream</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@form_option</span> = <span class="ruby-identifier">formopt</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">enctype</span>
<span class="ruby-keyword">when</span> <span class="ruby-regexp">/\Aapplication\/x-www-form-urlencoded\z/i</span>,
<span class="ruby-regexp">/\Amultipart\/form-data\z/i</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">content_type</span> = <span class="ruby-identifier">enctype</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"invalid enctype: #{enctype}"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-set_form_data" class="method-detail ">
<div class="method-heading">
<span class="method-name">set_form_data</span><span
class="method-args">(params, sep = '&')</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="../Set.html"><code>Set</code></a> header fields and a body from HTML form data. <code>params</code> should be an <a href="../Array.html"><code>Array</code></a> of Arrays or a <a href="../Hash.html"><code>Hash</code></a> containing HTML form data. Optional argument <code>sep</code> means data record separator.</p>
<p>Values are URL encoded as necessary and the content-type is set to application/x-www-form-urlencoded</p>
<p>Example:</p>
<pre class="ruby"><span class="ruby-identifier">http</span>.<span class="ruby-identifier">form_data</span> = {<span class="ruby-string">"q"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"ruby"</span>, <span class="ruby-string">"lang"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"en"</span>}
<span class="ruby-identifier">http</span>.<span class="ruby-identifier">form_data</span> = {<span class="ruby-string">"q"</span> <span class="ruby-operator">=></span> [<span class="ruby-string">"ruby"</span>, <span class="ruby-string">"perl"</span>], <span class="ruby-string">"lang"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"en"</span>}
<span class="ruby-identifier">http</span>.<span class="ruby-identifier">set_form_data</span>({<span class="ruby-string">"q"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"ruby"</span>, <span class="ruby-string">"lang"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"en"</span>}, <span class="ruby-string">';'</span>)
</pre>
<div class="method-source-code" id="set_form_data-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 416</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">set_form_data</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">sep</span> = <span class="ruby-string">'&'</span>)
<span class="ruby-identifier">query</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">encode_www_form</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-identifier">query</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/&/</span>, <span class="ruby-identifier">sep</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">sep</span> <span class="ruby-operator">!=</span> <span class="ruby-string">'&'</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">query</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">content_type</span> = <span class="ruby-string">'application/x-www-form-urlencoded'</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="HTTPHeader.html#method-i-form_data-3D">form_data=</a>
</div>
</div>
<div id="method-i-set_range" class="method-detail ">
<div class="method-heading">
<span class="method-name">set_range</span><span
class="method-args">(r, e = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets the <a href="HTTP.html"><code>HTTP</code></a> Range: header. Accepts either a <a href="../Range.html"><code>Range</code></a> object as a single argument, or a beginning index and a length from that index. Example:</p>
<pre class="ruby"><span class="ruby-identifier">req</span>.<span class="ruby-identifier">range</span> = (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">1023</span>)
<span class="ruby-identifier">req</span>.<span class="ruby-identifier">set_range</span> <span class="ruby-value">0</span>, <span class="ruby-value">1023</span>
</pre>
<div class="method-source-code" id="set_range-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 277</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">set_range</span>(<span class="ruby-identifier">r</span>, <span class="ruby-identifier">e</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">r</span>
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'range'</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">r</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">r</span> = (<span class="ruby-identifier">r</span><span class="ruby-operator">...</span><span class="ruby-identifier">r</span><span class="ruby-operator">+</span><span class="ruby-identifier">e</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">e</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">r</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Numeric</span>
<span class="ruby-identifier">n</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-identifier">rangestr</span> = (<span class="ruby-identifier">n</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-node">"0-#{n-1}"</span> <span class="ruby-operator">:</span> <span class="ruby-node">"-#{-n}"</span>)
<span class="ruby-keyword">when</span> <span class="ruby-constant">Range</span>
<span class="ruby-identifier">first</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">first</span>
<span class="ruby-identifier">last</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">end</span>
<span class="ruby-identifier">last</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">exclude_end?</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">last</span> <span class="ruby-operator">==</span> <span class="ruby-value">-1</span>
<span class="ruby-identifier">rangestr</span> = (<span class="ruby-identifier">first</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-node">"#{first}-"</span> <span class="ruby-operator">:</span> <span class="ruby-node">"-#{-first}"</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-string">'range.first is negative'</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">first</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-string">'range.last is negative'</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">last</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPHeaderSyntaxError</span>, <span class="ruby-string">'must be .first < .last'</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">first</span> <span class="ruby-operator">></span> <span class="ruby-identifier">last</span>
<span class="ruby-identifier">rangestr</span> = <span class="ruby-node">"#{first}-#{last}"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-string">'Range/Integer is required'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@header</span>[<span class="ruby-string">'range'</span>] = [<span class="ruby-node">"bytes=#{rangestr}"</span>]
<span class="ruby-identifier">r</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="HTTPHeader.html#method-i-range-3D">range=</a>
</div>
</div>
<div id="method-i-sub_type" class="method-detail ">
<div class="method-heading">
<span class="method-name">sub_type</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a content type string such as “html”. This method returns nil if Content-Type: header field does not exist or sub-type is not given (e.g. “Content-Type: text”).</p>
<div class="method-source-code" id="sub_type-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 372</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sub_type</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@header</span>[<span class="ruby-string">'content-type'</span>]
<span class="ruby-identifier">_</span>, <span class="ruby-identifier">sub</span> = <span class="ruby-operator">*</span><span class="ruby-keyword">self</span>[<span class="ruby-string">'Content-Type'</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">';'</span>).<span class="ruby-identifier">first</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">'/'</span>)
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">sub</span>
<span class="ruby-identifier">sub</span>.<span class="ruby-identifier">strip</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-to_hash" class="method-detail ">
<div class="method-heading">
<span class="method-name">to_hash</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a <a href="../Hash.html"><code>Hash</code></a> consisting of header names and array of values. e.g. {“cache-control” => [“private”],</p>
<pre>"content-type" => ["text/html"],
"date" => ["Wed, 22 Jun 2005 22:11:50 GMT"]}</pre>
<div class="method-source-code" id="to_hash-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 200</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_hash</span>
<span class="ruby-ivar">@header</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-type_params" class="method-detail ">
<div class="method-heading">
<span class="method-name">type_params</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Any parameters specified for the content type, returned as a <a href="../Hash.html"><code>Hash</code></a>. For example, a header of Content-Type: text/html; charset=EUC-JP would result in <a href="HTTPHeader.html#method-i-type_params"><code>type_params</code></a> returning {'charset' => 'EUC-JP'}</p>
<div class="method-source-code" id="type_params-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 382</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">type_params</span>
<span class="ruby-identifier">result</span> = {}
<span class="ruby-identifier">list</span> = <span class="ruby-keyword">self</span>[<span class="ruby-string">'Content-Type'</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">';'</span>)
<span class="ruby-identifier">list</span>.<span class="ruby-identifier">shift</span>
<span class="ruby-identifier">list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">param</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span> = <span class="ruby-operator">*</span><span class="ruby-identifier">param</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">'='</span>, <span class="ruby-value">2</span>)
<span class="ruby-identifier">result</span>[<span class="ruby-identifier">k</span>.<span class="ruby-identifier">strip</span>] = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">strip</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="private-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Private Instance Methods</h3>
</header>
<div id="method-i-append_field_value" class="method-detail ">
<div class="method-heading">
<span class="method-name">append_field_value</span><span
class="method-args">(ary, val)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="append_field_value-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 91</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">append_field_value</span>(<span class="ruby-identifier">ary</span>, <span class="ruby-identifier">val</span>)
<span class="ruby-keyword">case</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Enumerable</span>
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">append_field_value</span>(<span class="ruby-identifier">ary</span>, <span class="ruby-identifier">x</span>)}
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">if</span> <span class="ruby-regexp">/[\r\n]/n</span>.<span class="ruby-identifier">match?</span>(<span class="ruby-identifier">val</span>.<span class="ruby-identifier">b</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">'header field value cannot include CR/LF'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">ary</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-basic_encode" class="method-detail ">
<div class="method-heading">
<span class="method-name">basic_encode</span><span
class="method-args">(account, password)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="basic_encode-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 477</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">basic_encode</span>(<span class="ruby-identifier">account</span>, <span class="ruby-identifier">password</span>)
<span class="ruby-string">'Basic '</span> <span class="ruby-operator">+</span> [<span class="ruby-node">"#{account}:#{password}"</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'m0'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-capitalize" class="method-detail ">
<div class="method-heading">
<span class="method-name">capitalize</span><span
class="method-args">(name)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="capitalize-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 220</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">capitalize</span>(<span class="ruby-identifier">name</span>)
<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/-/</span>).<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">capitalize</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-string">'-'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-set_field" class="method-detail ">
<div class="method-heading">
<span class="method-name">set_field</span><span
class="method-args">(key, val)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="set_field-source">
<pre><span class="ruby-comment"># File lib/net/http/header.rb, line 76</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">set_field</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>)
<span class="ruby-keyword">case</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Enumerable</span>
<span class="ruby-identifier">ary</span> = []
<span class="ruby-identifier">append_field_value</span>(<span class="ruby-identifier">ary</span>, <span class="ruby-identifier">val</span>)
<span class="ruby-ivar">@header</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">ary</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-comment"># for compatibility use to_s instead of to_str</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">b</span>.<span class="ruby-identifier">count</span>(<span class="ruby-string">"\r\n"</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">'header field value cannot include CR/LF'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@header</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_s</span>] = [<span class="ruby-identifier">val</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>