Class: Apiwork::Adapter::Capability::Transformer::Request::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/apiwork/adapter/capability/transformer/request/base.rb

Overview

Base class for request transformers.

Request transformers modify requests before or after validation. Register transformers in capabilities using Base.request_transformer.

Examples:

Strip whitespace from strings

class MyRequestTransformer < Capability::Transformer::Request::Base
  phase :before

  def transform
    request.transform { |data| strip_strings(data) }
  end

  private

  def strip_strings(value)
    case value
    when String then value.strip
    when Hash then value.transform_values { |v| strip_strings(v) }
    when Array then value.map { |v| strip_strings(v) }
    else value
    end
  end
end

See Also:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ Base

Returns a new instance of Base.



56
57
58
# File 'lib/apiwork/adapter/capability/transformer/request/base.rb', line 56

def initialize(request)
  @request = request
end

Instance Attribute Details

#requestObject (readonly)



37
38
39
# File 'lib/apiwork/adapter/capability/transformer/request/base.rb', line 37

def request
  @request
end

Class Method Details

.phase(value = nil) ⇒ Symbol

The phase for this transformer.

Parameters:

  • value (Symbol, nil) (defaults to: nil)

    (nil) [:after, :before] The phase. Defaults to ‘:before` when not set.

Returns:

  • (Symbol)


46
47
48
49
# File 'lib/apiwork/adapter/capability/transformer/request/base.rb', line 46

def phase(value = nil)
  @phase = value if value
  @phase || :before
end

.transform(request) ⇒ Object



51
52
53
# File 'lib/apiwork/adapter/capability/transformer/request/base.rb', line 51

def transform(request)
  new(request).transform
end

Instance Method Details

#transformRequest

Transforms the request.

Returns:

Raises:

  • (NotImplementedError)


64
65
66
# File 'lib/apiwork/adapter/capability/transformer/request/base.rb', line 64

def transform
  raise NotImplementedError
end