Class: Hanami::V1::Action::BaseParams

Inherits:
Object
  • Object
show all
Defined in:
lib/hanami/v1/action/base_params.rb

Overview

Since:

  • 0.1.0

Direct Known Subclasses

Params

Constant Summary collapse

RACK_INPUT =

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

The key that returns raw input from the Rack env

Since:

  • 0.7.0

'rack.input'.freeze
ROUTER_PARAMS =

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

The key that returns router params from the Rack env This is a builtin integration for Hanami::Router

Since:

  • 0.7.0

'router.params'.freeze
RACK_SESSION =

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

The key that returns Rack session params from the Rack env Please note that this is used only when an action is unit tested.

Examples:

# action unit test
action.call('rack.session' => { 'foo' => 'bar' })
action.session[:foo] # => "bar"

Since:

  • 1.0.0

'rack.session'.freeze
REQUEST_METHOD =

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

HTTP request method for Rack env

Since:

  • 1.1.1

'REQUEST_METHOD'.freeze
DEFAULT_REQUEST_METHOD =

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

Default HTTP request method for Rack env

Since:

  • 1.1.1

'GET'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ Params

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.

Initialize the params and freeze them.

Parameters:

  • env (Hash)

    a Rack env or an hash of params.

Since:

  • 0.7.0



65
66
67
68
69
70
# File 'lib/hanami/v1/action/base_params.rb', line 65

def initialize(env)
  @env    = env
  @raw    = _extract_params
  @params = Hanami::Utils::Hash.deep_symbolize(@raw)
  freeze
end

Instance Attribute Details

#envObject (readonly)

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.7.0



49
50
51
# File 'lib/hanami/v1/action/base_params.rb', line 49

def env
  @env
end

#rawObject (readonly)

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.7.0



55
56
57
# File 'lib/hanami/v1/action/base_params.rb', line 55

def raw
  @raw
end

Instance Method Details

#[](key) ⇒ Object?

Returns the object associated with the given key

Parameters:

  • key (Symbol)

    the key

Returns:

  • (Object, nil)

    return the associated object, if found

Since:

  • 0.7.0



79
80
81
# File 'lib/hanami/v1/action/base_params.rb', line 79

def [](key)
  @params[key]
end

#each(&blk) ⇒ Object

Iterates through params

Parameters:

  • blk (Proc)

Since:

  • 0.7.1



150
151
152
# File 'lib/hanami/v1/action/base_params.rb', line 150

def each(&blk)
  to_h.each(&blk)
end

#get(*keys) ⇒ Object, NilClass Also known as: dig

Get an attribute value associated with the given key. Nested attributes are reached by listing all the keys to get to the value.

Examples:

require 'hanami/controller'

module Deliveries
  class Create
    include Hanami::Action

    def call(params)
      params.get(:customer_name)     # => "Luca"
      params.get(:uknown)            # => nil

      params.get(:address, :city)    # => "Rome"
      params.get(:address, :unknown) # => nil

      params.get(:tags, 0)           # => "foo"
      params.get(:tags, 1)           # => "bar"
      params.get(:tags, 999)         # => nil

      params.get(nil)                # => nil
    end
  end
end

Parameters:

  • keys (Array<Symbol,Integer>)

    the key

Returns:

  • (Object, NilClass)

    return the associated value, if found

Since:

  • 0.7.0



114
115
116
# File 'lib/hanami/v1/action/base_params.rb', line 114

def get(*keys)
  @params.dig(*keys)
end

#to_h::Hash Also known as: to_hash

Serialize params to Hash

Returns:

  • (::Hash)

Since:

  • 0.7.0



140
141
142
# File 'lib/hanami/v1/action/base_params.rb', line 140

def to_h
  @params
end

#valid?TrueClass

Provide a common interface with Params

Returns:

  • (TrueClass)

    always returns true

See Also:

  • Action::Params#valid?

Since:

  • 0.7.0



131
132
133
# File 'lib/hanami/v1/action/base_params.rb', line 131

def valid?
  true
end