Sha256: 77cdf7a2ba7742083edb7e1cf2cf35b4bf6f3c4c1043e9fe8d7a6882db0a68da
Contents?: true
Size: 1014 Bytes
Versions: 3
Compression:
Stored size: 1014 Bytes
Contents
# frozen_string_literal: true require 'housecanary/error' require 'housecanary/utils' module Housecanary class ResponseParser #:nodoc: class << self def perform(response) response_body = parse_body(response) code = parse_code(response.code, response_body) api_error_filter(code, response_body) end private def parse_body(response) response.body.empty? ? '' : utils.deep_symbolize_keys(response.parse(:json)) end def parse_code(code, body = {}) return code unless code.to_s.to_i == 200 api_code = body.dig(:api_code) if body.is_a?(Hash) return api_code unless api_code.to_s.to_i.zero? code end 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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
housecanary-ruby-0.1.3 | lib/housecanary/response_parser.rb |
housecanary-ruby-0.1.2 | lib/housecanary/response_parser.rb |
housecanary-ruby-0.1.1 | lib/housecanary/response_parser.rb |