class Hanami::Action::Request
The HTTP request for an action, given to {Action#handle}.
Inherits from ‘Rack::Request`, providing compatibility with Rack
functionality.
@see www.rubydoc.info/gems/rack/Rack/Request
@since 0.3.1
Attributes
Returns the request’s params.
@return [Params]
@since 2.0.0 @api public
Public Class Methods
@since 2.0.0 @api private
# File lib/hanami/action/request.rb, line 29 def initialize(env:, params:, session_enabled: false) super(env) @params = params @session_enabled = session_enabled end
Public Instance Methods
@since 0.1.0 @api private
# File lib/hanami/action/request.rb, line 110 def accept @accept ||= @env[Action::HTTP_ACCEPT] || Action::DEFAULT_ACCEPT end
@since 2.0.0 @api private
# File lib/hanami/action/request.rb, line 96 def accept?(mime_type) !!::Rack::Utils.q_values(accept).find do |mime, _| ::Rack::Mime.match?(mime_type, mime) end end
@since 2.0.0 @api private
# File lib/hanami/action/request.rb, line 104 def accept_header? accept != Action::DEFAULT_ACCEPT end
Returns the flash for the request.
@return [Flash]
@raise [MissingSessionError] if sessions are not enabled
@see Response#flash
@since 2.0.0 @api public
# File lib/hanami/action/request.rb, line 86 def flash unless session_enabled? raise Hanami::Action::MissingSessionError.new("Hanami::Action::Request#flash") end @flash ||= Flash.new(session[Flash::KEY]) end
Returns the request’s ID
@return [String]
@since 2.0.0 @api public
# File lib/hanami/action/request.rb, line 42 def id # FIXME: make this number configurable and document the probabilities of clashes @id ||= @env[Action::REQUEST_ID] = SecureRandom.hex(Action::DEFAULT_ID_LENGTH) end
Returns the session for the request.
@return [Hash] the session object
@raise [MissingSessionError] if the session is not enabled
@see session_enabled?
@see Response#session
@since 2.0.0 @api public
# File lib/hanami/action/request.rb, line 68 def session unless session_enabled? raise Hanami::Action::MissingSessionError.new("Hanami::Action::Request#session") end super end
Returns true if the session is enabled for the request.
@return [Boolean]
@api public @since 2.1.0
# File lib/hanami/action/request.rb, line 53 def session_enabled? @session_enabled end