Sha256: fc8e9085b5f36e35b61afc9c94b68a634886f61fc0223e3c561791083c4618b6

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

module SmsBroker
  module Client
    module Response
      class TwilioError < Error
        SENDER_ID_NOT_SUPPORTED = %w(21212 21612).freeze

        def initialize(twilio_response)
          super :twilio, twilio_response, serialize(twilio_response)
        end

        private

        def serialize(twilio_response)
          if twilio_response.is_a?(::Twilio::REST::RequestError)
            serialize_exeception_errors(twilio_response)
          else
            serialize_response_error(twilio_response)
          end
        end

        def serialize_response_error(response)
          errors = {
            response.error_code.to_s => [response.error_message]
          }

          if SENDER_ID_NOT_SUPPORTED.include?(response.error_code.to_s)
            errors['sender_id'] = ['is invalid']
          end

          errors
        end

        def serialize_exeception_errors(exception)
          errors = {
            exception.code.to_s => [exception.message]
          }

          if SENDER_ID_NOT_SUPPORTED.include?(exception.code.to_s)
            errors['sender_id'] = ['is invalid']
          end

          errors
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sms_broker-1.0.8 lib/sms_broker/client/response/twilio_error.rb
sms_broker-1.0.7 lib/sms_broker/client/response/twilio_error.rb
sms_broker-1.0.5 lib/sms_broker/client/response/twilio_error.rb