Class Innate::Request
In: lib/innate/request.rb
Parent: Rack::Request

Subclass Rack::Request and add some convenient methods.

An instance is available via the request method in your Node.

NOTE:

  Please make sure to read the documentation of Rack::Request together with
  this, as there are a lot of features available.

A list of methods from Rack::Request so you get a gist of it:

## Generally

  • body
  • cookies
  • env
  • fullpath
  • host
  • port
  • scheme
  • url

## ENV shortcuts

  • accept_encoding
  • content_charset
  • content_length
  • content_type
  • ip
  • media_type
  • media_type_params
  • path_info
  • path_info=
  • query_string
  • referrer
  • script_name
  • script_name=
  • xhr?

## Query request method

  • delete?
  • get?
  • head?
  • post?
  • put?
  • request_method

## parameter handling

  • []
  • []=
  • form_data?
  • params
  • values_at

Methods

[]   current   domain   local_net?   request_uri   subset  

Constants

LOCAL = (ipv4 + ipv6).map{|range| IPAddr.new(range)} unless defined?(LOCAL)

Public Class methods

Currently handled request from Thread.current[:request] Call it from anywhere via Innate::Request.current

Public Instance methods

Let‘s allow #[] to act like values_at.

Usage given a GET request like /hey?foo=duh&bar=doh

  request[:foo, :bar] # => ['duh', 'doh']

Both value and the elements of keys will be turned into String by to_s.

Try to figure out the domain we are running on, this might work for some deployments but fail for others, given the combination of servers in front.

@example usage

  domain
  # => #<URI::HTTPS:0xb769ecb0 URL:https://localhost:7000/>
  domain('/foo')
  # => #<URI::HTTPS:0xb769ecb0 URL:https://localhost:7000/foo>

@param [to_s] path

@return [URI]

@api external @author manveru

Request is from a local network? Checks both IPv4 and IPv6 Answer is true if the IP address making the request is from local network. Optional argument address can be used to check any IP address.

the full request URI provided by Rack::Request e.g. "localhost:7000/controller/action?foo=bar.xhtml"

Answers with a subset of request.params with only the key/value pairs for which you pass the keys. Valid keys are objects that respond to :to_s

@example usage

  request.params
  # => {'name' => 'jason', 'age' => '45', 'job' => 'lumberjack'}
  request.subset('name')
  # => {'name' => 'jason'}
  request.subset(:name, :job)
  # => {'name' => 'jason', 'job' => 'lumberjack'}

[Validate]