Module: Roda::RodaPlugins::SinatraHelpers::RequestMethods
- Defined in:
- lib/roda/plugins/sinatra_helpers.rb
Instance Method Summary collapse
-
#back ⇒ Object
Alias for referrer.
-
#error(code = 500, body = nil) ⇒ Object
Halt processing and return the error status provided with the given code and optional body.
-
#not_found(body = nil) ⇒ Object
Halt processing and return a 404 response with an optional body.
-
#redirect(path = (no_add_script_name = true; default_redirect_path), status = default_redirect_status) ⇒ Object
If the absolute_redirects or :prefixed_redirects roda class options has been set, respect those and update the path.
-
#send_file(path, opts = OPTS) ⇒ Object
Backwards compatibility for callers of r.send_file.
-
#uri(addr = nil, absolute = true, add_script_name = true) ⇒ Object
(also: #url, #to)
Generates the absolute URI for a given path in the app.
Instance Method Details
#back ⇒ Object
Alias for referrer
260 261 262 |
# File 'lib/roda/plugins/sinatra_helpers.rb', line 260 def back referrer end |
#error(code = 500, body = nil) ⇒ Object
Halt processing and return the error status provided with the given code and optional body. If a single argument is given and it is not an integer, consider it the body and use a 500 status code.
268 269 270 271 272 273 274 275 276 277 |
# File 'lib/roda/plugins/sinatra_helpers.rb', line 268 def error(code=500, body = nil) unless code.is_a?(Integer) body = code code = 500 end response.status = code response.body = body if body halt end |
#not_found(body = nil) ⇒ Object
Halt processing and return a 404 response with an optional body.
280 281 282 |
# File 'lib/roda/plugins/sinatra_helpers.rb', line 280 def not_found(body = nil) error(404, body) end |
#redirect(path = (no_add_script_name = true; default_redirect_path), status = default_redirect_status) ⇒ Object
If the absolute_redirects or :prefixed_redirects roda class options has been set, respect those and update the path.
286 287 288 289 290 291 292 |
# File 'lib/roda/plugins/sinatra_helpers.rb', line 286 def redirect(path=(no_add_script_name = true; default_redirect_path), status=default_redirect_status) opts = roda_class.opts absolute_redirects = opts[:absolute_redirects] prefixed_redirects = no_add_script_name ? false : opts[:prefixed_redirects] path = uri(path, absolute_redirects, prefixed_redirects) if absolute_redirects || prefixed_redirects super(path, status) end |
#send_file(path, opts = OPTS) ⇒ Object
Backwards compatibility for callers of r.send_file.
295 296 297 |
# File 'lib/roda/plugins/sinatra_helpers.rb', line 295 def send_file(path, opts = OPTS) scope.send_file(path, opts) end |
#uri(addr = nil, absolute = true, add_script_name = true) ⇒ Object Also known as: url, to
Generates the absolute URI for a given path in the app. Takes Rack routers and reverse proxies into account.
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 |
# File 'lib/roda/plugins/sinatra_helpers.rb', line 301 def uri(addr = nil, absolute = true, add_script_name = true) addr = addr.to_s if addr return addr if addr =~ /\A[A-z][A-z0-9\+\.\-]*:/ uri = if absolute h = if @env.has_key?("HTTP_X_FORWARDED_HOST") || port != (ssl? ? 443 : 80) host_with_port else host end ["http#{'s' if ssl?}://#{h}"] else [''] end uri << script_name.to_s if add_script_name uri << (addr || path_info) File.join(uri) end |