PHP 8.2.31
Preview: ConditionalGet.html Size: 18.12 KB
//proc/thread-self/root/opt/alt/ruby19/lib64/ruby/gems/1.9.1/doc/rack-1.6.4/rdoc/Rack/ConditionalGet.html

<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta content="text/html; charset=US-ASCII" http-equiv="Content-Type" />

  <title>Class: Rack::ConditionalGet</title>

  <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />

  <script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
  <script src="../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
  <script src="../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
  <script src="../js/darkfish.js" type="text/javascript" charset="utf-8"></script>

</head>
<body id="top" class="class">

  <div id="metadata">
    <div id="home-metadata">
      <div id="home-section" class="section">
        <h3 class="section-header">
          <a href="../index.html">Home</a>
          <a href="../index.html#classes">Classes</a>
          <a href="../index.html#methods">Methods</a>
        </h3>
      </div>
    </div>

    <div id="file-metadata">
      <div id="file-list-section" class="section">
        <h3 class="section-header">In Files</h3>
        <div class="section-body">
          <ul>
          
            <li><a href="../lib/rack/conditionalget_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
              class="thickbox" title="lib/rack/conditionalget.rb">lib/rack/conditionalget.rb</a></li>
          
          </ul>
        </div>
      </div>

      
    </div>

    <div id="class-metadata">
      
      <!-- Parent Class -->
      <div id="parent-class-section" class="section">
        <h3 class="section-header">Parent</h3>
        
        <p class="link"><a href="../Object.html">Object</a></p>
        
      </div>
      

      

      

      
      <!-- Method Quickref -->
      <div id="method-list-section" class="section">
        <h3 class="section-header">Methods</h3>
        <ul class="link-list">
          
          <li><a href="#method-c-new">::new</a></li>
          
          <li><a href="#method-i-call">#call</a></li>
          
        </ul>
      </div>
      

      
    </div>

    <div id="project-metadata">
      
      
      <div id="fileindex-section" class="section project-section">
        <h3 class="section-header">Files</h3>
        <ul>
        
          <li class="file"><a href="../KNOWN-ISSUES.html">KNOWN-ISSUES</a></li>
        
        </ul>
      </div>
      

      <div id="classindex-section" class="section project-section">
        <h3 class="section-header">Class/Module Index
          <span class="search-toggle"><img src="../images/find.png"
            height="16" width="16" alt="[+]"
            title="show/hide quicksearch" /></span></h3>
        <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
        <fieldset>
          <legend>Quicksearch</legend>
          <input type="text" name="quicksearch" value=""
            class="quicksearch-field" />
        </fieldset>
        </form>

        <ul class="link-list">
        
          <li><a href="../Rack.html">Rack</a></li>
        
          <li><a href="../Rack/Auth.html">Rack::Auth</a></li>
        
          <li><a href="../Rack/Auth/AbstractHandler.html">Rack::Auth::AbstractHandler</a></li>
        
          <li><a href="../Rack/Auth/AbstractRequest.html">Rack::Auth::AbstractRequest</a></li>
        
          <li><a href="../Rack/Auth/Basic.html">Rack::Auth::Basic</a></li>
        
          <li><a href="../Rack/Auth/Basic/Request.html">Rack::Auth::Basic::Request</a></li>
        
          <li><a href="../Rack/Auth/Digest.html">Rack::Auth::Digest</a></li>
        
          <li><a href="../Rack/Auth/Digest/MD5.html">Rack::Auth::Digest::MD5</a></li>
        
          <li><a href="../Rack/Auth/Digest/Nonce.html">Rack::Auth::Digest::Nonce</a></li>
        
          <li><a href="../Rack/Auth/Digest/Params.html">Rack::Auth::Digest::Params</a></li>
        
          <li><a href="../Rack/Auth/Digest/Request.html">Rack::Auth::Digest::Request</a></li>
        
          <li><a href="../Rack/BodyProxy.html">Rack::BodyProxy</a></li>
        
          <li><a href="../Rack/Builder.html">Rack::Builder</a></li>
        
          <li><a href="../Rack/Cascade.html">Rack::Cascade</a></li>
        
          <li><a href="../Rack/Chunked.html">Rack::Chunked</a></li>
        
          <li><a href="../Rack/Chunked/Body.html">Rack::Chunked::Body</a></li>
        
          <li><a href="../Rack/CommonLogger.html">Rack::CommonLogger</a></li>
        
          <li><a href="../Rack/ConditionalGet.html">Rack::ConditionalGet</a></li>
        
          <li><a href="../Rack/Config.html">Rack::Config</a></li>
        
          <li><a href="../Rack/ContentLength.html">Rack::ContentLength</a></li>
        
          <li><a href="../Rack/ContentType.html">Rack::ContentType</a></li>
        
          <li><a href="../Rack/Deflater.html">Rack::Deflater</a></li>
        
          <li><a href="../Rack/Deflater/DeflateStream.html">Rack::Deflater::DeflateStream</a></li>
        
          <li><a href="../Rack/Deflater/GzipStream.html">Rack::Deflater::GzipStream</a></li>
        
          <li><a href="../Rack/Directory.html">Rack::Directory</a></li>
        
          <li><a href="../Rack/ETag.html">Rack::ETag</a></li>
        
          <li><a href="../Rack/File.html">Rack::File</a></li>
        
          <li><a href="../Rack/ForwardRequest.html">Rack::ForwardRequest</a></li>
        
          <li><a href="../Rack/Handler.html">Rack::Handler</a></li>
        
          <li><a href="../Rack/Handler/CGI.html">Rack::Handler::CGI</a></li>
        
          <li><a href="../Rack/Handler/EventedMongrel.html">Rack::Handler::EventedMongrel</a></li>
        
          <li><a href="../Rack/Handler/FastCGI.html">Rack::Handler::FastCGI</a></li>
        
          <li><a href="../Rack/Handler/LSWS.html">Rack::Handler::LSWS</a></li>
        
          <li><a href="../Rack/Handler/Mongrel.html">Rack::Handler::Mongrel</a></li>
        
          <li><a href="../Rack/Handler/SCGI.html">Rack::Handler::SCGI</a></li>
        
          <li><a href="../Rack/Handler/SwiftipliedMongrel.html">Rack::Handler::SwiftipliedMongrel</a></li>
        
          <li><a href="../Rack/Handler/Thin.html">Rack::Handler::Thin</a></li>
        
          <li><a href="../Rack/Handler/WEBrick.html">Rack::Handler::WEBrick</a></li>
        
          <li><a href="../Rack/Head.html">Rack::Head</a></li>
        
          <li><a href="../Rack/Lint.html">Rack::Lint</a></li>
        
          <li><a href="../Rack/Lobster.html">Rack::Lobster</a></li>
        
          <li><a href="../Rack/Lock.html">Rack::Lock</a></li>
        
          <li><a href="../Rack/Logger.html">Rack::Logger</a></li>
        
          <li><a href="../Rack/MethodOverride.html">Rack::MethodOverride</a></li>
        
          <li><a href="../Rack/Mime.html">Rack::Mime</a></li>
        
          <li><a href="../Rack/MockRequest.html">Rack::MockRequest</a></li>
        
          <li><a href="../Rack/MockRequest/FatalWarner.html">Rack::MockRequest::FatalWarner</a></li>
        
          <li><a href="../Rack/MockRequest/FatalWarning.html">Rack::MockRequest::FatalWarning</a></li>
        
          <li><a href="../Rack/MockResponse.html">Rack::MockResponse</a></li>
        
          <li><a href="../Rack/Multipart.html">Rack::Multipart</a></li>
        
          <li><a href="../Rack/Multipart/Generator.html">Rack::Multipart::Generator</a></li>
        
          <li><a href="../Rack/Multipart/MultipartPartLimitError.html">Rack::Multipart::MultipartPartLimitError</a></li>
        
          <li><a href="../Rack/Multipart/Parser.html">Rack::Multipart::Parser</a></li>
        
          <li><a href="../Rack/Multipart/UploadedFile.html">Rack::Multipart::UploadedFile</a></li>
        
          <li><a href="../Rack/NullLogger.html">Rack::NullLogger</a></li>
        
          <li><a href="../Rack/Recursive.html">Rack::Recursive</a></li>
        
          <li><a href="../Rack/Reloader.html">Rack::Reloader</a></li>
        
          <li><a href="../Rack/Reloader/Stat.html">Rack::Reloader::Stat</a></li>
        
          <li><a href="../Rack/Request.html">Rack::Request</a></li>
        
          <li><a href="../Rack/Response.html">Rack::Response</a></li>
        
          <li><a href="../Rack/Response/Helpers.html">Rack::Response::Helpers</a></li>
        
          <li><a href="../Rack/RewindableInput.html">Rack::RewindableInput</a></li>
        
          <li><a href="../Rack/RewindableInput/Tempfile.html">Rack::RewindableInput::Tempfile</a></li>
        
          <li><a href="../Rack/Runtime.html">Rack::Runtime</a></li>
        
          <li><a href="../Rack/Sendfile.html">Rack::Sendfile</a></li>
        
          <li><a href="../Rack/Server.html">Rack::Server</a></li>
        
          <li><a href="../Rack/Server/Options.html">Rack::Server::Options</a></li>
        
          <li><a href="../Rack/Session.html">Rack::Session</a></li>
        
          <li><a href="../Rack/Session/Abstract.html">Rack::Session::Abstract</a></li>
        
          <li><a href="../Rack/Session/Abstract/ID.html">Rack::Session::Abstract::ID</a></li>
        
          <li><a href="../Rack/Session/Abstract/SessionHash.html">Rack::Session::Abstract::SessionHash</a></li>
        
          <li><a href="../Rack/Session/Cookie.html">Rack::Session::Cookie</a></li>
        
          <li><a href="../Rack/Session/Cookie/Base64.html">Rack::Session::Cookie::Base64</a></li>
        
          <li><a href="../Rack/Session/Cookie/Base64/JSON.html">Rack::Session::Cookie::Base64::JSON</a></li>
        
          <li><a href="../Rack/Session/Cookie/Base64/Marshal.html">Rack::Session::Cookie::Base64::Marshal</a></li>
        
          <li><a href="../Rack/Session/Cookie/Base64/ZipJSON.html">Rack::Session::Cookie::Base64::ZipJSON</a></li>
        
          <li><a href="../Rack/Session/Cookie/Identity.html">Rack::Session::Cookie::Identity</a></li>
        
          <li><a href="../Rack/Session/Memcache.html">Rack::Session::Memcache</a></li>
        
          <li><a href="../Rack/Session/Pool.html">Rack::Session::Pool</a></li>
        
          <li><a href="../Rack/ShowExceptions.html">Rack::ShowExceptions</a></li>
        
          <li><a href="../Rack/ShowStatus.html">Rack::ShowStatus</a></li>
        
          <li><a href="../Rack/Static.html">Rack::Static</a></li>
        
          <li><a href="../Rack/TempfileReaper.html">Rack::TempfileReaper</a></li>
        
          <li><a href="../Rack/URLMap.html">Rack::URLMap</a></li>
        
          <li><a href="../Rack/Utils.html">Rack::Utils</a></li>
        
          <li><a href="../Rack/Utils/Context.html">Rack::Utils::Context</a></li>
        
          <li><a href="../Rack/Utils/HeaderHash.html">Rack::Utils::HeaderHash</a></li>
        
          <li><a href="../Rack/Utils/InvalidParameterError.html">Rack::Utils::InvalidParameterError</a></li>
        
          <li><a href="../Rack/Utils/KeySpaceConstrainedParams.html">Rack::Utils::KeySpaceConstrainedParams</a></li>
        
          <li><a href="../Rack/Multipart.html">Rack::Utils::Multipart</a></li>
        
          <li><a href="../Rack/Utils/OkJson.html">Rack::Utils::OkJson</a></li>
        
          <li><a href="../Rack/Utils/OkJson/Error.html">Rack::Utils::OkJson::Error</a></li>
        
          <li><a href="../Rack/Utils/OkJson/Utf8Error.html">Rack::Utils::OkJson::Utf8Error</a></li>
        
          <li><a href="../Rack/Utils/ParameterTypeError.html">Rack::Utils::ParameterTypeError</a></li>
        
          <li><a href="../FCGI.html">FCGI</a></li>
        
          <li><a href="../FCGI/Stream.html">FCGI::Stream</a></li>
        
          <li><a href="../WEBrick.html">WEBrick</a></li>
        
          <li><a href="../WEBrick/HTTPResponse.html">WEBrick::HTTPResponse</a></li>
        
          <li><a href="../Object.html">Object</a></li>
        
        </ul>
        <div id="no-class-search-results" style="display: none;">No matching classes.</div>
      </div>

      
    </div>
  </div>

  <div id="documentation">
    <h1 class="class">Rack::ConditionalGet</h1>

    <div id="description" class="description">
      
<p>Middleware that enables conditional GET using If-None-Match and
If-Modified-Since. The application should set either or both of the
Last-Modified or Etag response headers according to RFC 2616. When either
of the conditions is met, the response body is set to be zero length and
the response status is set to 304 Not Modified.</p>

<p>Applications that defer response body generation until the body's each
message is received will avoid response body generation completely when a
conditional GET matches.</p>

<p>Adapted from Michael Klishin's Merb implementation: <a
href="https://github.com/wycats/merb/blob/master/merb-core/lib/merb-core/rack/middleware/conditional_get.rb">github.com/wycats/merb/blob/master/merb-core/lib/merb-core/rack/middleware/conditional_get.rb</a></p>

    </div><!-- description -->

    
    
    
    <div id="5Buntitled-5D" class="documentation-section">
      

      

      

      

      <!-- Methods -->
      
      <div id="public-class-method-details" class="method-section section">
        <h3 class="section-header">Public Class Methods</h3>

      
        <div id="new-method" class="method-detail ">
          <a name="method-c-new"></a>

          
          <div class="method-heading">
            <span class="method-name">new</span><span
              class="method-args">(app)</span>
            <span class="method-click-advice">click to toggle source</span>
          </div>
          

          <div class="method-description">
            
            
            

            
            <div class="method-source-code" id="new-source">
<pre>
<span class="ruby-comment"># File lib/rack/conditionalget.rb, line 18</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">app</span>)
  <span class="ruby-ivar">@app</span> = <span class="ruby-identifier">app</span>
<span class="ruby-keyword">end</span></pre>
            </div><!-- new-source -->
            
          </div>

          

          
        </div><!-- new-method -->

      
      </div><!-- public-class-method-details -->
    
      <div id="public-instance-method-details" class="method-section section">
        <h3 class="section-header">Public Instance Methods</h3>

      
        <div id="call-method" class="method-detail ">
          <a name="method-i-call"></a>

          
          <div class="method-heading">
            <span class="method-name">call</span><span
              class="method-args">(env)</span>
            <span class="method-click-advice">click to toggle source</span>
          </div>
          

          <div class="method-description">
            
            
            

            
            <div class="method-source-code" id="call-source">
<pre>
<span class="ruby-comment"># File lib/rack/conditionalget.rb, line 22</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">call</span>(<span class="ruby-identifier">env</span>)
  <span class="ruby-keyword">case</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">REQUEST_METHOD</span>]
  <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;GET&quot;</span>, <span class="ruby-string">&quot;HEAD&quot;</span>
    <span class="ruby-identifier">status</span>, <span class="ruby-identifier">headers</span>, <span class="ruby-identifier">body</span> = <span class="ruby-ivar">@app</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">env</span>)
    <span class="ruby-identifier">headers</span> = <span class="ruby-constant">Utils</span><span class="ruby-operator">::</span><span class="ruby-constant">HeaderHash</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">headers</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">fresh?</span>(<span class="ruby-identifier">env</span>, <span class="ruby-identifier">headers</span>)
      <span class="ruby-identifier">status</span> = <span class="ruby-value">304</span>
      <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-constant">CONTENT_TYPE</span>)
      <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-constant">CONTENT_LENGTH</span>)
      <span class="ruby-identifier">original_body</span> = <span class="ruby-identifier">body</span>
      <span class="ruby-identifier">body</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">BodyProxy</span>.<span class="ruby-identifier">new</span>([]) <span class="ruby-keyword">do</span>
        <span class="ruby-identifier">original_body</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">original_body</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:close</span>)
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>
    [<span class="ruby-identifier">status</span>, <span class="ruby-identifier">headers</span>, <span class="ruby-identifier">body</span>]
  <span class="ruby-keyword">else</span>
    <span class="ruby-ivar">@app</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">env</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
            </div><!-- call-source -->
            
          </div>

          

          
        </div><!-- call-method -->

      
      </div><!-- public-instance-method-details -->
    
    </div><!-- 5Buntitled-5D -->
  

  </div><!-- documentation -->

  <div id="validator-badges">
    <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
    <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
      Rdoc Generator</a> 2</small>.</p>
  </div>

</body>
</html>

Directory Contents

Dirs: 13 × Files: 42

Name Size Perms Modified Actions
Auth DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Chunked DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Deflater DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Handler DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Lint DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Multipart DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Reloader DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Response DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Server DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Session DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
Utils DIR
- drwxr-xr-x 2024-03-03 22:48:10
Edit Download
14.25 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
21.15 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
31.56 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
21.75 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
18.98 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
17.58 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
18.12 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
15.37 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
18.03 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
16.66 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
22.61 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
37.80 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
19.01 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
30.76 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
16.51 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
27.80 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
16.17 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
14.58 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
17.75 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
16.71 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
15.78 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
18.31 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
17.65 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
39.91 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
21.02 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
18.26 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
38.82 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
20.18 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
21.32 KB lrw-r--r-- 2019-12-05 22:59:33
Edit Download
100.97 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
35.97 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
21.51 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
16.89 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
23.65 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
35.16 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
13.56 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
26.39 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
19.17 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
29.31 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
16.51 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
23.63 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download
82.87 KB lrw-r--r-- 2019-12-05 22:59:34
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).