Sha256: a886c418deffe3b7910cf687a9feb567025d183478b12a886b82134b16fd17b5
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
class Evil::Client::Operation require_relative "response_error" require_relative "unexpected_response_error" # Processes rack responses using an operation's schema class Response extend Dry::Initializer::Mixin param :schema # Processes rack responses returned by [Dry::Cluent::Connection] # # @param [Array] array Rack-compatible array of response data # @return [Object] # @raise [Evil::Client::ResponseError] if it is required by the schema # 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 private def name @name ||= schema[:name] end def response_schema(response) schema[:responses].fetch response.status do fail UnexpectedResponseError.new(schema, response) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
evil-client-0.2.3 | lib/evil/client/operation/response.rb |
evil-client-0.2.2 | lib/evil/client/operation/response.rb |
evil-client-0.2.1 | lib/evil/client/operation/response.rb |