Sha256: 3fad14cf7eb0b65dda94fce0c0534de6c249f8a210a149b64c90fddd59fbbe11
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
# frozen_string_literal: true require_relative '../error' module Easyship module Middleware # Response middleware that raises an error based on the response status code class ErrorHandlerMiddleware < Faraday::Middleware def on_complete(env) status_code = env[:status].to_i body = JSON.parse(env[:body], symbolize_names: true) if json?(env[:body]) handle_status_code(status_code, body) end private def handle_status_code(status_code, body) error_class = Easyship::Error::ERRORS[status_code] raise_error(error_class, body) if error_class end def raise_error(class_error, body) raise class_error.new(message: message(body), body_error: body_error(body)) end def body_error(body) body.is_a?(Hash) ? body[:error] : {} end def message(body) body.is_a?(Hash) ? body[:error][:message] : body end def json?(body) !body.nil? && body.is_a?(String) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
easyship-0.1.1 | lib/easyship/middleware/error_handler_middleware.rb |
easyship-0.1.0 | lib/easyship/middleware/error_handler_middleware.rb |