Class: Hanami::Action::BaseParams

Inherits:
Object
  • Object
show all
Defined in:
lib/hanami/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



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

def initialize(env)
  @env    = env
  @raw    = _extract_params
  @params = 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



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

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



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

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



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

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

#each(&blk) ⇒ Object

Iterates through params

Parameters:

  • blk (Proc)

Since:

  • 0.7.1



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

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



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

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



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

def to_h
  @params
end

#valid?TrueClass

Provide a common interface with Params

Returns:

  • (TrueClass)

    always returns true

See Also:

Since:

  • 0.7.0



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

def valid?
  true
end