관리-도구
편집 파일: M000277.html
<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>env_for (Rack::MockRequest)</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" /> </head> <body class="standalone-code"> <pre><span class="ruby-comment cmt"># File lib/rack/mock.rb, line 88</span> <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">env_for</span>(<span class="ruby-identifier">uri</span>=<span class="ruby-value str">""</span>, <span class="ruby-identifier">opts</span>={}) <span class="ruby-identifier">uri</span> = <span class="ruby-identifier">parse_uri_rfc2396</span>(<span class="ruby-identifier">uri</span>) <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span> = <span class="ruby-node">"/#{uri.path}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?/</span> <span class="ruby-identifier">env</span> = <span class="ruby-constant">DEFAULT_ENV</span>.<span class="ruby-identifier">dup</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">REQUEST_METHOD</span>] = <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:method</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:method</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">upcase</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"GET"</span> <span class="ruby-identifier">env</span>[<span class="ruby-value str">"SERVER_NAME"</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span> <span class="ruby-operator">||</span> <span class="ruby-value str">"example.org"</span> <span class="ruby-identifier">env</span>[<span class="ruby-value str">"SERVER_PORT"</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span> <span class="ruby-value">? </span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"80"</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">QUERY_STRING</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">PATH_INFO</span>] = (<span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">empty?</span>) <span class="ruby-operator">?</span> <span class="ruby-value str">"/"</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span> <span class="ruby-identifier">env</span>[<span class="ruby-value str">"rack.url_scheme"</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span> <span class="ruby-operator">||</span> <span class="ruby-value str">"http"</span> <span class="ruby-identifier">env</span>[<span class="ruby-value str">"HTTPS"</span>] = <span class="ruby-identifier">env</span>[<span class="ruby-value str">"rack.url_scheme"</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"https"</span> <span class="ruby-operator">?</span> <span class="ruby-value str">"on"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"off"</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">SCRIPT_NAME</span>] = <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:script_name</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">""</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:fatal</span>] <span class="ruby-identifier">env</span>[<span class="ruby-value str">"rack.errors"</span>] = <span class="ruby-constant">FatalWarner</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">env</span>[<span class="ruby-value str">"rack.errors"</span>] = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:params</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">REQUEST_METHOD</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"GET"</span> <span class="ruby-identifier">params</span> = <span class="ruby-constant">Utils</span>.<span class="ruby-identifier">parse_nested_query</span>(<span class="ruby-identifier">params</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>) <span class="ruby-identifier">params</span>.<span class="ruby-identifier">update</span>(<span class="ruby-constant">Utils</span>.<span class="ruby-identifier">parse_nested_query</span>(<span class="ruby-identifier">env</span>[<span class="ruby-constant">QUERY_STRING</span>])) <span class="ruby-identifier">env</span>[<span class="ruby-constant">QUERY_STRING</span>] = <span class="ruby-constant">Utils</span>.<span class="ruby-identifier">build_nested_query</span>(<span class="ruby-identifier">params</span>) <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">opts</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">:input</span>) <span class="ruby-identifier">opts</span>[<span class="ruby-value str">"CONTENT_TYPE"</span>] = <span class="ruby-value str">"application/x-www-form-urlencoded"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">data</span> = <span class="ruby-constant">Utils</span><span class="ruby-operator">::</span><span class="ruby-constant">Multipart</span>.<span class="ruby-identifier">build_multipart</span>(<span class="ruby-identifier">params</span>) <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:input</span>] = <span class="ruby-identifier">data</span> <span class="ruby-identifier">opts</span>[<span class="ruby-value str">"CONTENT_LENGTH"</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-identifier">opts</span>[<span class="ruby-value str">"CONTENT_TYPE"</span>] = <span class="ruby-node">"multipart/form-data; boundary=#{Utils::Multipart::MULTIPART_BOUNDARY}"</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:input</span>] = <span class="ruby-constant">Utils</span>.<span class="ruby-identifier">build_nested_query</span>(<span class="ruby-identifier">params</span>) <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:input</span>] = <span class="ruby-identifier">params</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-identifier">empty_str</span> = <span class="ruby-value str">""</span> <span class="ruby-identifier">empty_str</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-value str">"ASCII-8BIT"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">empty_str</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:force_encoding</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:input</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">empty_str</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">String</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:input</span>] <span class="ruby-identifier">rack_input</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:input</span>]) <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">rack_input</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:input</span>] <span class="ruby-keyword kw">end</span> <span class="ruby-identifier">rack_input</span>.<span class="ruby-identifier">set_encoding</span>(<span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">BINARY</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rack_input</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:set_encoding</span>) <span class="ruby-identifier">env</span>[<span class="ruby-value str">'rack.input'</span>] = <span class="ruby-identifier">rack_input</span> <span class="ruby-identifier">env</span>[<span class="ruby-value str">"CONTENT_LENGTH"</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">env</span>[<span class="ruby-value str">"rack.input"</span>].<span class="ruby-identifier">length</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">field</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-identifier">env</span>[<span class="ruby-identifier">field</span>] = <span class="ruby-identifier">value</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">String</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">field</span> } <span class="ruby-identifier">env</span> <span class="ruby-keyword kw">end</span></pre> </body> </html>