Class: Hanami::Action::Request

Inherits:
Rack::Request
  • Object
show all
Defined in:
lib/hanami/action/request.rb

Overview

The HTTP request for an action, given to #handle.

Inherits from ‘Rack::Request`, providing compatibility with Rack functionality.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env:, params:, session_enabled: false) ⇒ Request

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Request.

Since:

  • 2.0.0



29
30
31
32
33
34
# File 'lib/hanami/action/request.rb', line 29

def initialize(env:, params:, session_enabled: false)
  super(env)

  @params = params
  @session_enabled = session_enabled
end

Instance Attribute Details

#paramsParams (readonly)

Returns the request’s params.

Returns:

Since:

  • 2.0.0



25
26
27
# File 'lib/hanami/action/request.rb', line 25

def params
  @params
end

Instance Method Details

#acceptObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.1.0



110
111
112
# File 'lib/hanami/action/request.rb', line 110

def accept
  @accept ||= @env[Action::HTTP_ACCEPT] || Action::DEFAULT_ACCEPT
end

#accept?(mime_type) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

Since:

  • 2.0.0



96
97
98
99
100
# 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

#accept_header?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

Since:

  • 2.0.0



104
105
106
# File 'lib/hanami/action/request.rb', line 104

def accept_header?
  accept != Action::DEFAULT_ACCEPT
end

#flashFlash

Returns the flash for the request.

Returns:

Raises:

See Also:

Since:

  • 2.0.0



86
87
88
89
90
91
92
# 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

#idString

Returns the request’s ID

Returns:

  • (String)

Since:

  • 2.0.0



42
43
44
45
# 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

#sessionHash

Returns the session for the request.

Returns:

  • (Hash)

    the session object

Raises:

See Also:

Since:

  • 2.0.0



68
69
70
71
72
73
74
# 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

#session_enabled?Boolean

Returns true if the session is enabled for the request.

Returns:

  • (Boolean)

Since:

  • 2.1.0



53
54
55
# File 'lib/hanami/action/request.rb', line 53

def session_enabled?
  @session_enabled
end