class Cuprum::Rails::Request

Wraps a web request with a generic interface.

Constants

FILTERED_HEADER_PREFIXES
FILTERED_PARAMS

Attributes

authorization[R]

@return [String, nil] the authorization header, if any.

body_parameters[R]

@return [Hash<String, Object>] The parameters from the request body.

body_params[R]

@return [Hash<String, Object>] The parameters from the request body.

format[R]

@return [Symbol] the request format, e.g. :html or :json.

headers[R]

@return [Hash<String, String>] the request headers.

method[R]

@return [Symbol] the HTTP method used for the request.

parameters[R]

@return [Hash<String, Object>] The merged GET and POST parameters.

params[R]

@return [Hash<String, Object>] The merged GET and POST parameters.

path[R]

@return [String] the relative path of the request, including params.

query_parameters[R]

@return [Hash<String, Object>] the query parameters.

query_params[R]

@return [Hash<String, Object>] the query parameters.

Public Class Methods

build(request:) click to toggle source

Generates a Request from a native Rails request.

@param request [] The native request to build.

@return [Cuprum::Rails::Request] the generated request.

# File lib/cuprum/rails/request.rb, line 24
def build(request:)
  new(
    authorization: request.authorization,
    body_params:   request.request_parameters,
    format:        request.format.symbol,
    headers:       filter_headers(request.headers),
    method:        request.request_method_symbol,
    params:        filter_params(request.params),
    path:          request.fullpath,
    query_params:  request.query_parameters
  )
end
new( body_params:, format:, headers:, method:, params:, path:, query_params:, authorization: nil ) click to toggle source

@param authorization [String, nil] The authorization header, if any. @param body_params [Hash<String, Object>] The parameters from the request

body.

@param format [Symbol] The request format, e.g. :html or :json. @param headers [Hash<String, String>] The request headers. @param method [Symbol] The HTTP method used for the request. @param params [Hash<String, Object>] The merged GET and POST parameters. @param query_params [Hash<String, Object>] The query parameters.

# File lib/cuprum/rails/request.rb, line 58
def initialize( # rubocop:disable Metrics/ParameterLists
  body_params:,
  format:,
  headers:,
  method:,
  params:,
  path:,
  query_params:,
  authorization: nil
)
  @authorization = authorization
  @body_params   = body_params
  @format        = format
  @headers       = headers
  @method        = method
  @path          = path
  @params        = params
  @query_params  = query_params
end

Private Class Methods

filter_headers(headers) click to toggle source
# File lib/cuprum/rails/request.rb, line 39
def filter_headers(headers)
  headers.reject do |key, _|
    FILTERED_HEADER_PREFIXES.any? { |prefix| key.start_with?(prefix) }
  end
end
filter_params(params) click to toggle source
# File lib/cuprum/rails/request.rb, line 45
def filter_params(params)
  params.reject { |key, _| FILTERED_PARAMS.include?(key) }
end