Module: Roda::RodaPlugins::SinatraHelpers::RequestMethods

Defined in:
lib/roda/plugins/sinatra_helpers.rb

Instance Method Summary collapse

Instance Method Details

#backObject

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