Class: Evil::Client::Operation::Response

Inherits:
Object
  • Object
show all
Extended by:
Dry::Initializer::Mixin
Defined in:
lib/evil/client/operation/response.rb

Overview

Processes rack responses using an operation’s schema

Instance Method Summary collapse

Instance Method Details

#handle(array) ⇒ Object

Processes rack responses returned by [Dry::Cluent::Connection]

Parameters:

  • array (Array)

    Rack-compatible array of response data

Returns:

  • (Object)

Raises:

  • (Evil::Client::ResponseError)

    if it is required by the schema



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/evil/client/operation/response.rb', line 16

def handle(array)
  status, header, body = array
  response = Rack::Response.new(body, status, header)

  handler = response_schema(response)
  data    = handler[:coercer].call response: response,
                                   body:     response.body,
                                   header:   response.header

  handler[:raise] ? fail(ResponseError.new(schema, status, data)) : data
end