Class Rack::Request
In: lib/rack/request.rb
Parent: Object

Rack::Request provides a convenient interface to a Rack environment. It is stateless, the environment env passed to the constructor will be directly modified.

  req = Rack::Request.new(env)
  req.post?
  req.params["data"]

Methods

GET   POST   body   cookies   delete?   get?   host   new   params   path_info   path_info=   port   post?   put?   query_string   request_method   scheme   script_name   script_name=   url   xhr?  

Attributes

env  [R]  The environment of the request.

Public Class methods

[Source]

    # File lib/rack/request.rb, line 16
16:     def initialize(env)
17:       @env = env
18:     end

Public Instance methods

Returns the data recieved in the query string.

[Source]

    # File lib/rack/request.rb, line 42
42:     def GET
43:       if @env["rack.request.query_string"] == query_string
44:         @env["rack.request.query_hash"]
45:       else
46:         @env["rack.request.query_string"] = query_string
47:         @env["rack.request.query_hash"]   =
48:           Utils.parse_query(query_string)
49:       end
50:     end

Returns the data recieved in the request body.

This method support both application/x-www-form-urlencoded and multipart/form-data.

[Source]

    # File lib/rack/request.rb, line 56
56:     def POST
57:       if @env["rack.request.form_input"] == @env["rack.input"]
58:         @env["rack.request.form_hash"]
59:       else
60:         @env["rack.request.form_input"] = @env["rack.input"]
61:         unless @env["rack.request.form_hash"] =
62:             Utils::Multipart.parse_multipart(env) 
63:           @env["rack.request.form_vars"] = @env["rack.input"].read
64:           @env["rack.request.form_hash"] = Utils.parse_query(@env["rack.request.form_vars"])
65:         end
66:         @env["rack.request.form_hash"]
67:       end
68:     end

[Source]

    # File lib/rack/request.rb, line 20
20:     def body;            @env["rack.input"]                       end

[Source]

    # File lib/rack/request.rb, line 75
75:     def cookies
76:       return {}  unless @env["HTTP_COOKIE"]
77: 
78:       if @env["rack.request.cookie_string"] == @env["HTTP_COOKIE"]
79:         @env["rack.request.cookie_hash"]
80:       else
81:         @env["rack.request.cookie_string"] = @env["HTTP_COOKIE"]
82:         # XXX sure?
83:         @env["rack.request.cookie_hash"] =
84:           Utils.parse_query(@env["rack.request.cookie_string"], ';,')
85:       end
86:     end

[Source]

    # File lib/rack/request.rb, line 39
39:     def delete?;         request_method == "DELETE"               end

[Source]

    # File lib/rack/request.rb, line 36
36:     def get?;            request_method == "GET"                  end

[Source]

    # File lib/rack/request.rb, line 28
28:     def host
29:       # Remove port number.
30:       (@env["HTTP_HOST"] || @env["SERVER_NAME"]).gsub(/:\d+\z/, '')
31:     end

The union of GET and POST data.

[Source]

    # File lib/rack/request.rb, line 71
71:     def params
72:       self.GET.update(self.POST)
73:     end

[Source]

    # File lib/rack/request.rb, line 23
23:     def path_info;       @env["PATH_INFO"].to_s                   end

[Source]

    # File lib/rack/request.rb, line 34
34:     def path_info=(s);   @env["PATH_INFO"] = s.to_s               end

[Source]

    # File lib/rack/request.rb, line 24
24:     def port;            @env["SERVER_PORT"].to_i                 end

[Source]

    # File lib/rack/request.rb, line 37
37:     def post?;           request_method == "POST"                 end

[Source]

    # File lib/rack/request.rb, line 38
38:     def put?;            request_method == "PUT"                  end

[Source]

    # File lib/rack/request.rb, line 26
26:     def query_string;    @env["QUERY_STRING"].to_s                end

[Source]

    # File lib/rack/request.rb, line 25
25:     def request_method;  @env["REQUEST_METHOD"]                   end

[Source]

    # File lib/rack/request.rb, line 21
21:     def scheme;          @env["rack.url_scheme"]                  end

[Source]

    # File lib/rack/request.rb, line 22
22:     def script_name;     @env["SCRIPT_NAME"].to_s                 end

[Source]

    # File lib/rack/request.rb, line 33
33:     def script_name=(s); @env["SCRIPT_NAME"] = s.to_s             end

Tries to return a remake of the original request URL as a string.

[Source]

     # File lib/rack/request.rb, line 93
 93:     def url
 94:       url = scheme + "://"
 95:       url << host
 96: 
 97:       if scheme == "https" && port != 443 ||
 98:           scheme == "http" && port != 80
 99:         url << ":#{port}"
100:       end
101: 
102:       url << script_name
103:       url << path_info
104: 
105:       unless query_string.empty?
106:         url << "?" << query_string
107:       end
108: 
109:       url
110:     end

[Source]

    # File lib/rack/request.rb, line 88
88:     def xhr?
89:       @env["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"
90:     end

[Validate]