Class: SimpleConnect::Result
- Inherits:
-
Data
- Object
- Data
- SimpleConnect::Result
- Defined in:
- lib/simple_connect/result.rb
Overview
Envelope returned from every resource method. Immutable value type (‘Data.define`) — consumers cannot mutate it post-construction.
Holds the HTTP-level outcome plus the typed response object (when the server body was parseable).
‘#data` is polymorphic by outcome:
-
2xx + valid JSON → endpoint-specific success class (DeliverResponse, etc.)
-
4xx/5xx + valid JSON → ErrorResponse
-
anything else (non-JSON body, network error) → nil
Consumers always check ‘#success?` first, then read `#data` or fall back to `#error` + `#response_body`.
Instance Attribute Summary collapse
-
#attempts ⇒ Object
readonly
Returns the value of attribute attempts.
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#response_body ⇒ Object
readonly
Returns the value of attribute response_body.
-
#status_code ⇒ Object
readonly
Returns the value of attribute status_code.
-
#success ⇒ Object
readonly
Returns the value of attribute success.
Instance Method Summary collapse
- #failed? ⇒ Boolean
-
#initialize(success:, status_code: 0, response_body: nil, error: nil, attempts: 1, data: nil) ⇒ Result
constructor
Defaults so internal construction sites don’t have to pass every field.
- #success? ⇒ Boolean
-
#with_data(new_data) ⇒ Object
Returns a new Result with ‘data` replaced.
Constructor Details
#initialize(success:, status_code: 0, response_body: nil, error: nil, attempts: 1, data: nil) ⇒ Result
Defaults so internal construction sites don’t have to pass every field.
21 22 23 |
# File 'lib/simple_connect/result.rb', line 21 def initialize(success:, status_code: 0, response_body: nil, error: nil, attempts: 1, data: nil) super end |
Instance Attribute Details
#attempts ⇒ Object (readonly)
Returns the value of attribute attempts
17 18 19 |
# File 'lib/simple_connect/result.rb', line 17 def attempts @attempts end |
#data ⇒ Object (readonly)
Returns the value of attribute data
17 18 19 |
# File 'lib/simple_connect/result.rb', line 17 def data @data end |
#error ⇒ Object (readonly)
Returns the value of attribute error
17 18 19 |
# File 'lib/simple_connect/result.rb', line 17 def error @error end |
#response_body ⇒ Object (readonly)
Returns the value of attribute response_body
17 18 19 |
# File 'lib/simple_connect/result.rb', line 17 def response_body @response_body end |
#status_code ⇒ Object (readonly)
Returns the value of attribute status_code
17 18 19 |
# File 'lib/simple_connect/result.rb', line 17 def status_code @status_code end |
#success ⇒ Object (readonly)
Returns the value of attribute success
17 18 19 |
# File 'lib/simple_connect/result.rb', line 17 def success @success end |
Instance Method Details
#failed? ⇒ Boolean
29 30 31 |
# File 'lib/simple_connect/result.rb', line 29 def failed? !success end |
#success? ⇒ Boolean
25 26 27 |
# File 'lib/simple_connect/result.rb', line 25 def success? success end |
#with_data(new_data) ⇒ Object
Returns a new Result with ‘data` replaced. Used by ResponseAttachment (Data instances are immutable; #with from Data.define creates a copy).
35 36 37 |
# File 'lib/simple_connect/result.rb', line 35 def with_data(new_data) with(data: new_data) end |