# frozen_string_literal: true require "ruby-bandwidth-iris" module BandwidthIris class APIError < StandardError attr_reader :code def initialize(description:, code: nil) super(description) @code = code end end class APIErrors < StandardError attr_reader :errors def initialize(errors) super(errors.map { |e| e[:description] }.join("\n")) @errors = errors end end class Client # Expose useful error messages from the API instead of hiding them def check_response(response) parsed_body = parse_xml(response.body || "") return parsed_body unless response.status >= 400 raise APIError.new(**parsed_body[:error]) if parsed_body&.key?(:error) raise APIErrors, parsed_body[:errors] if parsed_body&.key?(:errors) raise Errors::GenericError.new( "", "Http code #{response.status}", response.status ) end end end