diff --git a/lib/bandwidth_iris_patch.rb b/lib/bandwidth_iris_patch.rb index 807541adb2f868f803fbc4c4df5f98980b5fe497..98715162d861a81040cadc75d5582674141f7560 100644 --- a/lib/bandwidth_iris_patch.rb +++ b/lib/bandwidth_iris_patch.rb @@ -2,10 +2,15 @@ require "ruby-bandwidth-iris" +# rubocop:disable Metrics/AbcSize module BandwidthIris class APIError < StandardError attr_reader :code + def self.for_response_status(description:, error_code:) + new(description: description, code: error_code) + end + def initialize(description:, code: nil) super(description) @code = code @@ -27,6 +32,11 @@ module BandwidthIris parsed_body = parse_xml(response.body || "") return parsed_body unless response.status >= 400 raise APIError.new(**parsed_body[:error]) if parsed_body&.key?(:error) + + if parsed_body&.key?(:response_status) + raise APIError.for_response_status(**parsed_body[:response_status]) + end + raise APIErrors, parsed_body[:errors] if parsed_body&.key?(:errors) raise Errors::GenericError.new( @@ -35,3 +45,4 @@ module BandwidthIris end end end +# rubocop:enable Metrics/AbcSize diff --git a/lib/sip_account.rb b/lib/sip_account.rb index b0b4cf2af11bf6a995ec39d42359603191d48a0e..2774a7269106e442308e5175902bcce26e7d6408 100644 --- a/lib/sip_account.rb +++ b/lib/sip_account.rb @@ -9,7 +9,7 @@ require_relative "mn_words" class SipAccount def self.find(name) new(BandwidthIris::SipCredential.get(name)) - rescue BandwidthIris::Errors::GenericError # 404 + rescue BandwidthIris::APIError # 404 New.new(BandwidthIris::SipCredential.new( user_name: name, realm: CONFIG[:sip][:realm],