Class: Uploadcare::Result
- Inherits:
-
Object
- Object
- Uploadcare::Result
- Defined in:
- lib/uploadcare/result.rb
Overview
Result wrapper for success/error handling.
Instance Attribute Summary collapse
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Class Method Summary collapse
-
.capture ⇒ Uploadcare::Result
Capture exceptions and wrap in Result.
-
.failure(error) ⇒ Uploadcare::Result
Build a failure result.
-
.success(value) ⇒ Uploadcare::Result
Build a success result.
-
.unwrap(value) ⇒ Object
Unwrap a Result or return the value as-is.
Instance Method Summary collapse
-
#error_message ⇒ String?
Error message.
-
#failure ⇒ Object
Error value.
- #failure? ⇒ Boolean
-
#initialize(value: nil, error: nil) ⇒ Result
constructor
A new instance of Result.
-
#success ⇒ Object
Success value.
- #success? ⇒ Boolean
-
#value! ⇒ Object
Return the success value or raise the wrapped error.
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
#error ⇒ Object (readonly)
Returns the value of attribute error.
5 6 7 |
# File 'lib/uploadcare/result.rb', line 5 def error @error end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
5 6 7 |
# File 'lib/uploadcare/result.rb', line 5 def value @value end |
Class Method Details
.capture ⇒ Uploadcare::Result
Capture exceptions and wrap in Result.
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.
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.
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.
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_message ⇒ String?
Returns error message.
80 81 82 83 84 |
# File 'lib/uploadcare/result.rb', line 80 def return nil if @error.nil? @error.respond_to?(:message) ? @error. : @error.to_s end |
#failure ⇒ Object
Returns error value.
59 60 61 |
# File 'lib/uploadcare/result.rb', line 59 def failure @error end |
#failure? ⇒ Boolean
49 50 51 |
# File 'lib/uploadcare/result.rb', line 49 def failure? !success? end |
#success ⇒ Object
Returns success value.
54 55 56 |
# File 'lib/uploadcare/result.rb', line 54 def success @value end |
#success? ⇒ 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.
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 |