Class: Uploadcare::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/uploadcare/result.rb

Overview

Result wrapper for success/error handling.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value: nil, error: nil) ⇒ Result

Returns a new instance of Result.



7
8
9
10
# File 'lib/uploadcare/result.rb', line 7

def initialize(value: nil, error: nil)
  @value = value
  @error = error
end

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error.



5
6
7
# File 'lib/uploadcare/result.rb', line 5

def error
  @error
end

#valueObject (readonly)

Returns the value of attribute value.



5
6
7
# File 'lib/uploadcare/result.rb', line 5

def value
  @value
end

Class Method Details

.captureUploadcare::Result

Capture exceptions and wrap in Result.

Returns:



31
32
33
34
35
# File 'lib/uploadcare/result.rb', line 31

def self.capture
  success(yield)
rescue StandardError => e
  failure(e)
end

.failure(error) ⇒ Uploadcare::Result

Build a failure result.

Parameters:

  • error (Object)

Returns:



24
25
26
# File 'lib/uploadcare/result.rb', line 24

def self.failure(error)
  new(error: error)
end

.success(value) ⇒ Uploadcare::Result

Build a success result.

Parameters:

  • value (Object)

Returns:



16
17
18
# File 'lib/uploadcare/result.rb', line 16

def self.success(value)
  new(value: value)
end

.unwrap(value) ⇒ Object

Unwrap a Result or return the value as-is.

Parameters:

  • value (Object)

Returns:

  • (Object)


41
42
43
# File 'lib/uploadcare/result.rb', line 41

def self.unwrap(value)
  value.is_a?(Uploadcare::Result) ? value.value! : value
end

Instance Method Details

#error_messageString?

Returns error message.

Returns:

  • (String, nil)

    error message



80
81
82
83
84
# File 'lib/uploadcare/result.rb', line 80

def error_message
  return nil if @error.nil?

  @error.respond_to?(:message) ? @error.message : @error.to_s
end

#failureObject

Returns error value.

Returns:

  • (Object)

    error value



59
60
61
# File 'lib/uploadcare/result.rb', line 59

def failure
  @error
end

#failure?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/uploadcare/result.rb', line 49

def failure?
  !success?
end

#successObject

Returns success value.

Returns:

  • (Object)

    success value



54
55
56
# File 'lib/uploadcare/result.rb', line 54

def success
  @value
end

#success?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/uploadcare/result.rb', line 45

def success?
  @error.nil?
end

#value!Object

Return the success value or raise the wrapped error.

Returns:

  • (Object)

Raises:

  • (Exception, RuntimeError)


67
68
69
70
71
72
73
74
75
76
77
# File 'lib/uploadcare/result.rb', line 67

def value!
  if failure?
    error = @error
    raise error if error.is_a?(Exception)
    raise error if error.is_a?(String)

    raise error.to_s
  end

  @value
end