Hacked By AnonymousFox
<?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&height=550&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">"GET"</span>, <span class="ruby-string">"HEAD"</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">&&</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>
Hacked By AnonymousFox1.0, Coded By AnonymousFox