Sha256: 2ad4f7e0a57dff316a22c1346797a26cdda4cf67cf8662e6fdc0b9c571a8486c

Contents?: true

Size: 670 Bytes

Versions: 1

Compression:

Stored size: 670 Bytes

Contents

# frozen_string_literal: true

require 'housecanary/error'
require 'housecanary/utils'

module Housecanary
  class ResponseParser #:nodoc:
    class << self
      def perform(response)
        response_body = response.body.empty? ? '' : utils.deep_symbolize_keys(response.parse(:json))
        api_error_filter(response.code, response_body)
      end

      private

      def utils
        Housecanary::Utils
      end

      def error(code, body)
        Housecanary::Error::ERRORS_MAP[code]&.from_response(body)
      end

      def api_error_filter(code, body)
        error = error(code, body)
        raise(error) if error
        body
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
housecanary-ruby-0.1.0 lib/housecanary/response_parser.rb