HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
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">&#39;, &#39;</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">&#39;X-My-Header&#39;</span>, <span class="ruby-string">&#39;a&#39;</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>[<span class="ruby-string">&#39;X-My-Header&#39;</span>]              <span class="ruby-comment">#=&gt; &quot;a&quot;</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">get_fields</span>(<span class="ruby-string">&#39;X-My-Header&#39;</span>)   <span class="ruby-comment">#=&gt; [&quot;a&quot;]</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">add_field</span> <span class="ruby-string">&#39;X-My-Header&#39;</span>, <span class="ruby-string">&#39;b&#39;</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>[<span class="ruby-string">&#39;X-My-Header&#39;</span>]              <span class="ruby-comment">#=&gt; &quot;a, b&quot;</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">get_fields</span>(<span class="ruby-string">&#39;X-My-Header&#39;</span>)   <span class="ruby-comment">#=&gt; [&quot;a&quot;, &quot;b&quot;]</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">add_field</span> <span class="ruby-string">&#39;X-My-Header&#39;</span>, <span class="ruby-string">&#39;c&#39;</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>[<span class="ruby-string">&#39;X-My-Header&#39;</span>]              <span class="ruby-comment">#=&gt; &quot;a, b, c&quot;</span>
<span class="ruby-identifier">p</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">get_fields</span>(<span class="ruby-string">&#39;X-My-Header&#39;</span>)   <span class="ruby-comment">#=&gt; [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]</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">&#39;authorization&#39;</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">&#39;transfer-encoding&#39;</span>]
  <span class="ruby-identifier">field</span> = <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;Transfer-Encoding&#39;</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">&#39;connection&#39;</span>]&amp;.<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">&#39;proxy-connection&#39;</span>]&amp;.<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">&#39;connection&#39;</span>]&amp;.<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">&#39;proxy-connection&#39;</span>]&amp;.<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">&#39;Content-Length&#39;</span>)
  <span class="ruby-identifier">len</span> = <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;Content-Length&#39;</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">&#39;wrong Content-Length format&#39;</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">&#39;content-length&#39;</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">&#39;content-length&#39;</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">&#39;content-range&#39;</span>]
  <span class="ruby-identifier">m</span> = <span class="ruby-regexp">%r&lt;bytes\s+(\d+)-(\d+)/(\d+|\*)&gt;i</span>.<span class="ruby-identifier">match</span>(<span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;Content-Range&#39;</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">&#39;wrong Content-Range format&#39;</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">&quot;#{main_type()}/#{sub_type()}&quot;</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(&#39;, &#39;)| ... }</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">&#39;, &#39;</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">&quot;#{key} = #{value}&quot;</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">&#39;, &#39;</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">&amp;</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">&amp;</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">&#39;, &#39;</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&#39;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">&amp;</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">&amp;</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">&#39;, &#39;</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 = &#39;&amp;&#39;)</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(&#39;Set-Cookie&#39;)
  #=&gt; [&quot;session=al98axx; expires=Fri, 31-Dec-1999 23:58:23&quot;,
       &quot;query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23&quot;]
p response[&#39;Set-Cookie&#39;]
  #=&gt; &quot;session=al98axx; expires=Fri, 31-Dec-1999 23:58:23, query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23&quot;</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">&quot;net/http: duplicated HTTP header: #{key}&quot;</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">&quot;net/http: nil HTTP header: #{key}&quot;</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">&quot;\r\n&quot;</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
        <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;header #{key} has field value #{value.inspect}, this cannot include CR/LF&quot;</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">&#39;content-type&#39;</span>]
  <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;Content-Type&#39;</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>).<span class="ruby-identifier">first</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;/&#39;</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">&#39;proxy-authorization&#39;</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">&#39;range&#39;</span>]

  <span class="ruby-identifier">value</span> = <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;Range&#39;</span>]
  <span class="ruby-comment"># byte-range-set = *( &quot;,&quot; OWS ) ( byte-range-spec / suffix-byte-range-spec )</span>
  <span class="ruby-comment">#   *( OWS &quot;,&quot; [ 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">&quot;invalid syntax for byte-ranges-specifier: &#39;#{value}&#39;&quot;</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">&quot;invalid byte-range-spec: &#39;#{spec}&#39;&quot;</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">&gt;</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">&quot;last-byte-pos MUST greater than or equal to first-byte-pos but &#39;#{spec}&#39;&quot;</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">&#39;range is not specified&#39;</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">&amp;&amp;</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">&amp;&amp;</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">&#39;only one suffix-byte-range-spec with zero suffix-length&#39;</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. {&#39;charset&#39; =&gt; &#39;iso-8859-1&#39;}</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">&#39;content-type&#39;</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">&quot;; #{k}=#{v}&quot;</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;&#39;</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=&#39;application/x-www-form-urlencoded&#39;, 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">&quot;q&quot;</span>, <span class="ruby-string">&quot;ruby&quot;</span>], [<span class="ruby-string">&quot;lang&quot;</span>, <span class="ruby-string">&quot;en&quot;</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">&#39;application/x-www-form-urlencoded&#39;</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">&quot;invalid enctype: #{enctype}&quot;</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 = &#39;&amp;&#39;)</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">&quot;q&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;ruby&quot;</span>, <span class="ruby-string">&quot;lang&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;en&quot;</span>}
<span class="ruby-identifier">http</span>.<span class="ruby-identifier">form_data</span> = {<span class="ruby-string">&quot;q&quot;</span> <span class="ruby-operator">=&gt;</span> [<span class="ruby-string">&quot;ruby&quot;</span>, <span class="ruby-string">&quot;perl&quot;</span>], <span class="ruby-string">&quot;lang&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;en&quot;</span>}
<span class="ruby-identifier">http</span>.<span class="ruby-identifier">set_form_data</span>({<span class="ruby-string">&quot;q&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;ruby&quot;</span>, <span class="ruby-string">&quot;lang&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;en&quot;</span>}, <span class="ruby-string">&#39;;&#39;</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">&#39;&amp;&#39;</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">/&amp;/</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">&#39;&amp;&#39;</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">&#39;application/x-www-form-urlencoded&#39;</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">&#39;range&#39;</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">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-node">&quot;0-#{n-1}&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-node">&quot;-#{-n}&quot;</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">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-node">&quot;#{first}-&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-node">&quot;-#{-first}&quot;</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">&#39;range.first is negative&#39;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">first</span> <span class="ruby-operator">&lt;</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">&#39;range.last is negative&#39;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">last</span> <span class="ruby-operator">&lt;</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">&#39;must be .first &lt; .last&#39;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">first</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">last</span>
      <span class="ruby-identifier">rangestr</span> = <span class="ruby-node">&quot;#{first}-#{last}&quot;</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">&#39;Range/Integer is required&#39;</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-ivar">@header</span>[<span class="ruby-string">&#39;range&#39;</span>] = [<span class="ruby-node">&quot;bytes=#{rangestr}&quot;</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">&#39;content-type&#39;</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">&#39;Content-Type&#39;</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>).<span class="ruby-identifier">first</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;/&#39;</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” =&gt; [“private”],</p>

<pre>&quot;content-type&quot; =&gt; [&quot;text/html&quot;],
&quot;date&quot; =&gt; [&quot;Wed, 22 Jun 2005 22:11:50 GMT&quot;]}</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 {&#39;charset&#39; =&gt; &#39;EUC-JP&#39;}</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">&#39;Content-Type&#39;</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</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">&#39;=&#39;</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">&#39;header field value cannot include CR/LF&#39;</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">&#39;Basic &#39;</span> <span class="ruby-operator">+</span> [<span class="ruby-node">&quot;#{account}:#{password}&quot;</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-string">&#39;m0&#39;</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">&#39;-&#39;</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">&quot;\r\n&quot;</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
      <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&#39;header field value cannot include CR/LF&#39;</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>