Module: Salestation::App::InputVerification

Defined in:
lib/salestation/app/input_verification.rb

Instance Method Summary collapse

Instance Method Details

#verify_input(schema) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/salestation/app/input_verification.rb', line 6

def verify_input(schema)
  -> (request) do
    input = request.input
    result = schema.call(input)

    dry_validation_version = Gem.loaded_specs['dry-validation'].version
    if dry_validation_version < Gem::Version.new('1.0')
      Mapper.from_dry_validation_result(result.output, result.errors, custom_error_map)
      if result.success?
        request.replace_input(result.output)
      else
        Deterministic::Result::Failure(
          Errors::InvalidInput.new(errors: result.errors, hints: result.hints)
        )
      end
    elsif dry_validation_version < Gem::Version.new('2.0')
      if result.success?
        request.replace_input(input)
      else
        Deterministic::Result::Failure(
          Errors::InvalidInput.new(errors: result.errors.to_h, hints: result.hints.to_h)
        )
      end
    else
      raise 'Unsupported dry-validation version'
    end
  end
end