Module: Loqate::Result::Mixin

Included in:
Address::Gateway, Bank::Gateway, Email::Gateway, Geocoding::Gateway, Phone::Gateway
Defined in:
lib/loqate/result.rb

Overview

Utility methods to conveniently return Success or Failure results.

Constant Summary collapse

Success =
Success
Failure =
Failure

Instance Method Summary collapse

Instance Method Details

#Failure(value, code: nil) ⇒ Success

Wraps the result of an operation in a Failure result.

Examples:

Creating a failure result

error = { message: 'Name cannot be blank' }
Success(value: error, code: :not_persisted)

Parameters:

  • value (Object)

    The original return value of an operation.

  • code (Symbol) (defaults to: nil)

    A unique

Returns:



100
101
102
# File 'lib/loqate/result.rb', line 100

def Failure(value, code: nil)
  Failure.new(value: value, code: code)
end

#Success(value) ⇒ Success

Wraps the result of an operation in a Success result.

Examples:

Creating a success result

Success(value: Person.new)

Parameters:

  • value (Object)

    The original return value of an operation.

Returns:



85
86
87
# File 'lib/loqate/result.rb', line 85

def Success(value)
  Success.new(value: value)
end

#unwrap_result_or_raiseObject

Unwraps a Result object. Returns the unwrapped value if the result is successful or raise an exception otherwise.

Examples:

When the given block returns a success

class Action
  include Loqate::Result::Mixin

  def call
    Success('the value')
  end
end

operation.unwrap_result_or_raise { call } # => 'the value'

When the given block returns a failure

class Action
  include Loqate::Result::Mixin

  def call
    Failure(StandardError.new)
  end
end

operation.unwrap_result_or_raise { call } # => raises StandardError

Returns:

  • (Object)

    The unwrapped object.

Raises:

  • (Object)

    If the result is not a success.



133
134
135
136
137
138
139
# File 'lib/loqate/result.rb', line 133

def unwrap_result_or_raise
  result = yield

  raise result.error if result.failure?

  result.value
end