Class: Rage::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/rage/request.rb

Instance Method Summary collapse

Instance Method Details

#delete?Boolean

Check the HTTP request method to see if it was of type DELETE.

Returns:

  • (Boolean)

    true if it was a DELETE request



106
107
108
# File 'lib/rage/request.rb', line 106

def delete?
  rack_request.delete?
end

#domain(tld_length = 1) ⇒ Object

Get the domain part of the request.

Examples:

Consider a URL like: example.foo.gov

request.domain => "foo.gov"
request.domain(0) => "gov"
request.domain(2) => "example.foo.gov"

Parameters:

  • tld_length (Integer) (defaults to: 1)

    top-level domain length



187
188
189
# File 'lib/rage/request.rb', line 187

def domain(tld_length = 1)
  extract_domain(host, tld_length)
end

#envHash

Get the Rack environment hash.

Returns:

  • (Hash)

    the Rack env



76
77
78
# File 'lib/rage/request.rb', line 76

def env
  @env
end

#formatString?

Get the content type of the request.

Returns:

  • (String, nil)

    the MIME type of the request body



148
149
150
# File 'lib/rage/request.rb', line 148

def format
  rack_request.content_type
end

#fresh?(etag:, last_modified:) ⇒ Boolean

Check if the request is fresh.

Examples:

request.fresh?(etag: "123", last_modified: Time.utc(2023, 12, 15))
request.fresh?(last_modified: Time.utc(2023, 12, 15))
request.fresh?(etag: "123")

Parameters:

  • etag (String)

    The etag of the requested resource.

  • last_modified (Time)

    The last modified time of the requested resource.

Returns:

  • (Boolean)

    True if the request is fresh, false otherwise.



168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/rage/request.rb', line 168

def fresh?(etag:, last_modified:)
  # Always render response when no freshness information
  # is provided in the request.
  return false unless if_none_match || if_not_modified_since

  etag_matches?(
    requested_etags: if_none_match, response_etag: etag
  ) && not_modified?(
    request_not_modified_since: if_not_modified_since,
    response_last_modified: last_modified
  )
end

#fullpathString

Get the request path including the query string.

Examples:

request.fullpath # => "/users?show_archived=true"

Returns:

  • (String)

    path with query string (if present)



134
135
136
# File 'lib/rage/request.rb', line 134

def fullpath
  rack_request.fullpath
end

#get?Boolean

Check the HTTP request method to see if it was of type GET.

Returns:

  • (Boolean)

    true if it was a GET request



82
83
84
# File 'lib/rage/request.rb', line 82

def get?
  rack_request.get?
end

#head?Boolean

Check the HTTP request method to see if it was of type HEAD.

Returns:

  • (Boolean)

    true if it was a HEAD request



112
113
114
# File 'lib/rage/request.rb', line 112

def head?
  rack_request.head?
end

#headersObject

Get the request headers.

Examples:

request.headers["Content-Type"] # => "application/json"
request.headers["Connection"] # => "keep-alive"


156
157
158
# File 'lib/rage/request.rb', line 156

def headers
  @headers ||= Headers.new(@env)
end

#hostString

Get the hostname from the request.

Returns:

  • (String)

    the hostname



58
59
60
# File 'lib/rage/request.rb', line 58

def host
  rack_request.host
end

#methodString

Get the HTTP method of the request. If the client is using the Rack::MethodOverride middleware, then the X-HTTP-Method-Override header is checked first.

Returns:

  • (String)

    The HTTP Method override header or the request method header



194
195
196
# File 'lib/rage/request.rb', line 194

def method
  check_method(@env["rack.methodoverride.original_method"] || @env["REQUEST_METHOD"])
end

#patch?Boolean

Check the HTTP request method to see if it was of type PATCH.

Returns:

  • (Boolean)

    true if it was a PATCH request



94
95
96
# File 'lib/rage/request.rb', line 94

def patch?
  rack_request.patch?
end

#pathString

Get the request path.

Examples:

request.path # => "/users"

Returns:

  • (String)

    the path component of the URL



126
127
128
# File 'lib/rage/request.rb', line 126

def path
  rack_request.path
end

#portInteger

Get the port number from the request.

Returns:

  • (Integer)

    the port number



64
65
66
# File 'lib/rage/request.rb', line 64

def port
  rack_request.port
end

#post?Boolean

Check the HTTP request method to see if it was of type POST.

Returns:

  • (Boolean)

    true if it was a POST request



88
89
90
# File 'lib/rage/request.rb', line 88

def post?
  rack_request.post?
end

#protocolString

Returns https:// if this was an HTTPS request and http:// otherwise.

Returns:

  • (String)

    https:// if this was an HTTP request over SSL/TLS or http:// if it was an HTTP request



52
53
54
# File 'lib/rage/request.rb', line 52

def protocol
  ssl? ? "https://" : "http://"
end

#put?Boolean

Check the HTTP request method to see if it was of type PUT.

Returns:

  • (Boolean)

    true if it was a PUT request



100
101
102
# File 'lib/rage/request.rb', line 100

def put?
  rack_request.put?
end

#query_stringString

Get the query string from the request.

Returns:

  • (String)

    the query string (empty string if no query)



70
71
72
# File 'lib/rage/request.rb', line 70

def query_string
  rack_request.query_string
end

#request_idString Also known as: uuid

Get the unique request ID. By default, this ID is internally generated, and all log entries created during the request are tagged with it. Alternatively, you can use the Rage::RequestId middleware to derive the ID from the X-Request-Id header.

Returns:

  • (String)

    the request ID



201
202
203
# File 'lib/rage/request.rb', line 201

def request_id
  @env["rage.request_id"]
end

#ssl?Boolean

Check if the request was made using TLS/SSL which is if http or https protocol is used inside the URL.

Returns:

  • (Boolean)

    true if the request is TLS/SSL, false otherwise



46
47
48
# File 'lib/rage/request.rb', line 46

def ssl?
  rack_request.ssl?
end

#urlString

Get the full request URL.

Returns:

  • (String)

    complete URL including protocol, host, path, and query



118
119
120
# File 'lib/rage/request.rb', line 118

def url
  rack_request.url
end

#user_agentString?

Get the User-Agent header value.

Examples:

request.user_agent # => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"

Returns:

  • (String, nil)

    the user agent string or nil



142
143
144
# File 'lib/rage/request.rb', line 142

def user_agent
  rack_request.user_agent
end