Class: SimpleConnect::Result

Inherits:
Data
  • Object
show all
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

Instance Method Summary collapse

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

#attemptsObject (readonly)

Returns the value of attribute attempts

Returns:

  • (Object)

    the current value of attempts



17
18
19
# File 'lib/simple_connect/result.rb', line 17

def attempts
  @attempts
end

#dataObject (readonly)

Returns the value of attribute data

Returns:

  • (Object)

    the current value of data



17
18
19
# File 'lib/simple_connect/result.rb', line 17

def data
  @data
end

#errorObject (readonly)

Returns the value of attribute error

Returns:

  • (Object)

    the current value of error



17
18
19
# File 'lib/simple_connect/result.rb', line 17

def error
  @error
end

#response_bodyObject (readonly)

Returns the value of attribute response_body

Returns:

  • (Object)

    the current value of response_body



17
18
19
# File 'lib/simple_connect/result.rb', line 17

def response_body
  @response_body
end

#status_codeObject (readonly)

Returns the value of attribute status_code

Returns:

  • (Object)

    the current value of status_code



17
18
19
# File 'lib/simple_connect/result.rb', line 17

def status_code
  @status_code
end

#successObject (readonly)

Returns the value of attribute success

Returns:

  • (Object)

    the current value of success



17
18
19
# File 'lib/simple_connect/result.rb', line 17

def success
  @success
end

Instance Method Details

#failed?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/simple_connect/result.rb', line 29

def failed?
  !success
end

#success?Boolean

Returns:

  • (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