bandwidth-sdk 6.1.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +89 -12
- data/lib/bandwidth.rb +5 -2
- data/lib/bandwidth/api_helper.rb +5 -17
- data/lib/bandwidth/client.rb +23 -9
- data/lib/bandwidth/configuration.rb +54 -18
- data/lib/bandwidth/http/auth/{two_factor_auth_basic_auth.rb → multi_factor_auth_basic_auth.rb} +3 -3
- data/lib/bandwidth/http/auth/phone_number_lookup_basic_auth.rb +22 -0
- data/lib/bandwidth/http/faraday_client.rb +5 -2
- data/lib/bandwidth/messaging_lib/messaging/client.rb +14 -5
- data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +25 -29
- data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message_item.rb +47 -2
- data/lib/bandwidth/messaging_lib/messaging/models/media.rb +5 -75
- data/lib/bandwidth/models/base_model.rb +19 -8
- data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth.rb +23 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/client.rb +15 -6
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/controllers/base_controller.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/controllers/mfa_controller.rb +7 -7
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/exceptions/error_with_request_exception.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/exceptions/forbidden_request_exception.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/exceptions/unauthorized_request_exception.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/models/two_factor_code_request_schema.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/models/two_factor_messaging_response.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/models/two_factor_verify_code_response.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/models/two_factor_verify_request_schema.rb +0 -0
- data/lib/bandwidth/{two_factor_auth_lib/two_factor_auth → multi_factor_auth_lib/multi_factor_auth}/models/two_factor_voice_response.rb +0 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup.rb +20 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/client.rb +60 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/controllers/api_controller.rb +1551 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/controllers/base_controller.rb +49 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/exceptions/accounts_tnlookup400_error_exception.rb +29 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/order_request.rb +35 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/order_response.rb +45 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/order_status.rb +74 -0
- data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/result.rb +107 -0
- data/lib/bandwidth/utilities/date_time_helper.rb +156 -0
- data/lib/bandwidth/voice_lib/voice.rb +14 -18
- data/lib/bandwidth/voice_lib/voice/client.rb +14 -5
- data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +248 -230
- data/lib/bandwidth/voice_lib/voice/exceptions/{api_error_response_exception.rb → api_error_exception.rb} +2 -2
- data/lib/bandwidth/voice_lib/voice/models/{recording_metadata_response.rb → call_recording_metadata.rb} +47 -28
- data/lib/bandwidth/voice_lib/voice/models/call_state.rb +232 -0
- data/lib/bandwidth/voice_lib/voice/models/callback_method_enum.rb +2 -20
- data/lib/bandwidth/voice_lib/voice/models/conference_event_method_enum.rb +2 -20
- data/lib/bandwidth/voice_lib/voice/models/{conference_member_detail.rb → conference_member_state.rb} +8 -8
- data/lib/bandwidth/voice_lib/voice/models/{conference_recording_metadata_response.rb → conference_recording_metadata.rb} +34 -18
- data/lib/bandwidth/voice_lib/voice/models/{conference_detail.rb → conference_state.rb} +22 -14
- data/lib/bandwidth/voice_lib/voice/models/{api_create_call_request.rb → create_call_request.rb} +35 -59
- data/lib/bandwidth/voice_lib/voice/models/{api_call_response.rb → create_call_response.rb} +28 -23
- data/lib/bandwidth/voice_lib/voice/models/{modify_call_recording_state.rb → modify_call_recording_request.rb} +4 -4
- data/lib/bandwidth/voice_lib/voice/models/{api_modify_call_request.rb → modify_call_request.rb} +25 -25
- data/lib/bandwidth/voice_lib/voice/models/{api_modify_conference_request.rb → modify_conference_request.rb} +11 -11
- data/lib/bandwidth/voice_lib/voice/models/state1_enum.rb +7 -4
- data/lib/bandwidth/voice_lib/voice/models/state_enum.rb +4 -7
- data/lib/bandwidth/voice_lib/voice/models/{api_transcribe_recording_request.rb → transcribe_recording_request.rb} +8 -8
- data/lib/bandwidth/voice_lib/voice/models/{transcription.rb → transcription_metadata.rb} +19 -10
- data/lib/bandwidth/web_rtc_lib/utils/web_rtc_transfer.rb +7 -2
- data/lib/bandwidth/web_rtc_lib/web_rtc/client.rb +14 -5
- data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/api_controller.rb +14 -14
- data/lib/bandwidth/web_rtc_lib/web_rtc/models/device_api_version_enum.rb +2 -2
- data/test/controllers/controller_test_base.rb +21 -0
- data/test/http_response_catcher.rb +19 -0
- data/test/integration/test_integration.rb +39 -13
- data/test/test_helper.rb +94 -0
- metadata +47 -37
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth.rb +0 -22
- data/lib/bandwidth/voice_lib/voice/models/api_call_state_response.rb +0 -164
- data/lib/bandwidth/voice_lib/voice/models/disconnect_cause_enum.rb +0 -47
- data/lib/bandwidth/voice_lib/voice/models/state2_enum.rb +0 -20
- data/lib/bandwidth/voice_lib/voice/models/status1_enum.rb +0 -29
- data/lib/bandwidth/voice_lib/voice/models/status3_enum.rb +0 -32
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3230ac98ad8a88408743b41bf7226f9a5922f90c97b1ec27f08685ffb30a0e46
         | 
| 4 | 
            +
              data.tar.gz: 0a6eb443359389264d88fb753df32a349782c7cefda1093544f21b09cb489347
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 15c7da77f1d1466770867d761ba804b7ff703e3977174f6095fbfb79d89c80987699e04d2fcede3828453cae63058ea49d150d49c04676ffc0d6a3c0494a8447
         | 
| 7 | 
            +
              data.tar.gz: f71c32303e851a4a90d471e4b4ed456d5887071149ec278a37b386473b6d3d2e994de15fa529053003c71c84408b9da85076426137a1daadd1917bd843574188
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,16 +1,14 @@ | |
| 1 1 | 
             
            # Bandwidth Ruby SDK
         | 
| 2 | 
            -
              
         | 
| 3 | 
            -
            Bandwidth's API docs can be found at https://dev.bandwidth.com
         | 
| 4 2 |  | 
| 5 | 
            -
             | 
| 3 | 
            +
            ## Getting Started
         | 
| 6 4 |  | 
| 7 | 
            -
             | 
| 5 | 
            +
            ### Installation
         | 
| 8 6 |  | 
| 9 7 | 
             
            ```
         | 
| 10 8 | 
             
            gem install bandwidth-sdk
         | 
| 11 9 | 
             
            ```
         | 
| 12 10 |  | 
| 13 | 
            -
             | 
| 11 | 
            +
            ### Initialize
         | 
| 14 12 |  | 
| 15 13 | 
             
            ```ruby
         | 
| 16 14 | 
             
            require 'bandwidth'
         | 
| @@ -18,21 +16,27 @@ require 'bandwidth' | |
| 18 16 | 
             
            include Bandwidth
         | 
| 19 17 | 
             
            include Bandwidth::Voice
         | 
| 20 18 | 
             
            include Bandwidth::Messaging
         | 
| 19 | 
            +
            include Bandwidth::WebRtc
         | 
| 20 | 
            +
            include Bandwidth::TwoFactorAuth
         | 
| 21 21 |  | 
| 22 22 | 
             
            bandwidth_client = Bandwidth::Client.new(
         | 
| 23 23 | 
             
                voice_basic_auth_user_name: 'username',
         | 
| 24 24 | 
             
                voice_basic_auth_password: 'password',
         | 
| 25 | 
            -
                messaging_basic_auth_user_name: ' | 
| 26 | 
            -
                messaging_basic_auth_password: ' | 
| 25 | 
            +
                messaging_basic_auth_user_name: 'username',
         | 
| 26 | 
            +
                messaging_basic_auth_password: 'username',
         | 
| 27 | 
            +
                two_factor_auth_basic_auth_user_name: 'username',
         | 
| 28 | 
            +
                two_factor_auth_basic_auth_password: 'password',
         | 
| 29 | 
            +
                web_rtc_basic_auth_user_name: 'username',
         | 
| 30 | 
            +
                web_rtc_basic_auth_password: 'password'
         | 
| 27 31 | 
             
            )
         | 
| 32 | 
            +
            account_id = "12345"
         | 
| 28 33 | 
             
            ```
         | 
| 29 34 |  | 
| 30 | 
            -
             | 
| 35 | 
            +
            ### Create Phone Call
         | 
| 31 36 |  | 
| 32 37 | 
             
            ```ruby
         | 
| 33 38 | 
             
            voice_client = bandwidth_client.voice_client.client
         | 
| 34 39 |  | 
| 35 | 
            -
            account_id = '1'
         | 
| 36 40 | 
             
            body = ApiCreateCallRequest.new
         | 
| 37 41 | 
             
            body.from = '+16666666666'
         | 
| 38 42 | 
             
            body.to = '+17777777777'
         | 
| @@ -49,7 +53,7 @@ rescue Bandwidth::ErrorResponseException => e | |
| 49 53 | 
             
            end
         | 
| 50 54 | 
             
            ```
         | 
| 51 55 |  | 
| 52 | 
            -
             | 
| 56 | 
            +
            ### Generate BXML
         | 
| 53 57 |  | 
| 54 58 | 
             
            ```ruby
         | 
| 55 59 | 
             
            response = Bandwidth::Voice::Response.new()
         | 
| @@ -59,12 +63,11 @@ response.push(hangup) | |
| 59 63 | 
             
            puts response.to_bxml()
         | 
| 60 64 | 
             
            ```
         | 
| 61 65 |  | 
| 62 | 
            -
             | 
| 66 | 
            +
            ### Send Text Message
         | 
| 63 67 |  | 
| 64 68 | 
             
            ```ruby
         | 
| 65 69 | 
             
            messaging_client = bandwidth_client.messaging_client.client
         | 
| 66 70 |  | 
| 67 | 
            -
            account_id = '1'
         | 
| 68 71 | 
             
            body = MessageRequest.new
         | 
| 69 72 | 
             
            body.application_id = '1-2-3'
         | 
| 70 73 | 
             
            body.to = ['+17777777777']
         | 
| @@ -83,3 +86,77 @@ rescue Bandwidth::PathClientException => e | |
| 83 86 | 
             
                puts e.response_code #400
         | 
| 84 87 | 
             
            end
         | 
| 85 88 | 
             
            ```
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            ### Create A MFA Request
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            ```ruby
         | 
| 93 | 
            +
            auth_client = bandwidth_client.two_factor_auth_client.mfa
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            from_phone = "+18888888888"
         | 
| 96 | 
            +
            to_phone = "+17777777777"
         | 
| 97 | 
            +
            messaging_application_id = "1-d-b"
         | 
| 98 | 
            +
            scope = "scope"
         | 
| 99 | 
            +
            digits = 6
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            body = TwoFactorCodeRequestSchema.new
         | 
| 102 | 
            +
            body.from = from_phone
         | 
| 103 | 
            +
            body.to = to_phone
         | 
| 104 | 
            +
            body.application_id = messaging_application_id
         | 
| 105 | 
            +
            body.scope = scope
         | 
| 106 | 
            +
            body.digits = digits
         | 
| 107 | 
            +
            body.message = "Your temporary {NAME} {SCOPE} code is {CODE}"
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            auth_client.create_messaging_two_factor(account_id, body)
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            code = "123456" #This is the user input to validate
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            body = TwoFactorVerifyRequestSchema.new
         | 
| 114 | 
            +
            body.from = from_phone
         | 
| 115 | 
            +
            body.to = to_phone
         | 
| 116 | 
            +
            body.application_id = application_id
         | 
| 117 | 
            +
            body.scope = scope
         | 
| 118 | 
            +
            body.code = code
         | 
| 119 | 
            +
            body.digits = digits
         | 
| 120 | 
            +
            body.expiration_time_in_minutes = 3
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            response = auth_client.create_verify_two_factor(account_id, body)
         | 
| 123 | 
            +
            puts "Auth status: " + response.data.valid.to_s
         | 
| 124 | 
            +
            ```
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            ### WebRtc Participant & Session Management
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            ```ruby
         | 
| 129 | 
            +
            web_rtc_client = bandwidth_client.web_rtc_client.client
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            create_session_body = Session.new
         | 
| 132 | 
            +
            create_session_body.tag = 'new-session'
         | 
| 133 | 
            +
             | 
| 134 | 
            +
            create_session_response = web_rtc_client.create_session(account_id, :body => create_session_body)
         | 
| 135 | 
            +
            session_id = create_session_response.data.id
         | 
| 136 | 
            +
            puts session_id
         | 
| 137 | 
            +
             | 
| 138 | 
            +
            create_participant_body = Participant.new
         | 
| 139 | 
            +
            create_participant_body.publish_permissions = [
         | 
| 140 | 
            +
                PublishPermissionEnum::AUDIO,
         | 
| 141 | 
            +
                PublishPermissionEnum::VIDEO
         | 
| 142 | 
            +
            ]
         | 
| 143 | 
            +
            create_participant_body.callback_url = "https://sample.com"
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            create_participant_response = web_rtc_client.create_participant(account_id, :body => create_participant_body)
         | 
| 146 | 
            +
            participant_id = create_participant_response.data.participant.id
         | 
| 147 | 
            +
            puts participant_id
         | 
| 148 | 
            +
             | 
| 149 | 
            +
            web_rtc_client.add_participant_to_session(account_id, session_id, participant_id)
         | 
| 150 | 
            +
            ```
         | 
| 151 | 
            +
             | 
| 152 | 
            +
            ## Supported Ruby Versions
         | 
| 153 | 
            +
             | 
| 154 | 
            +
            This package can be used with Ruby >= 2.0 
         | 
| 155 | 
            +
             | 
| 156 | 
            +
            ## Documentation
         | 
| 157 | 
            +
             | 
| 158 | 
            +
            Documentation for this package can be found at https://dev.bandwidth.com/sdks/ruby.html
         | 
| 159 | 
            +
             | 
| 160 | 
            +
            ## Credentials
         | 
| 161 | 
            +
             | 
| 162 | 
            +
            Information for credentials for this package can be found at https://dev.bandwidth.com/guides/accountCredentials.html
         | 
    
        data/lib/bandwidth.rb
    CHANGED
    
    | @@ -14,6 +14,7 @@ require_relative 'bandwidth/client.rb' | |
| 14 14 |  | 
| 15 15 | 
             
            # Utilities
         | 
| 16 16 | 
             
            require_relative 'bandwidth/utilities/file_wrapper.rb'
         | 
| 17 | 
            +
            require_relative 'bandwidth/utilities/date_time_helper.rb'
         | 
| 17 18 |  | 
| 18 19 | 
             
            # Http
         | 
| 19 20 | 
             
            require_relative 'bandwidth/http/api_response.rb'
         | 
| @@ -35,8 +36,10 @@ require_relative 'bandwidth/configuration.rb' | |
| 35 36 | 
             
            # Namespaces
         | 
| 36 37 | 
             
            require_relative 'bandwidth/messaging_lib/messaging'
         | 
| 37 38 | 
             
            require_relative 'bandwidth/http/auth/messaging_basic_auth.rb'
         | 
| 38 | 
            -
            require_relative 'bandwidth/ | 
| 39 | 
            -
            require_relative 'bandwidth/http/auth/ | 
| 39 | 
            +
            require_relative 'bandwidth/multi_factor_auth_lib/multi_factor_auth'
         | 
| 40 | 
            +
            require_relative 'bandwidth/http/auth/multi_factor_auth_basic_auth.rb'
         | 
| 41 | 
            +
            require_relative 'bandwidth/phone_number_lookup_lib/phone_number_lookup'
         | 
| 42 | 
            +
            require_relative 'bandwidth/http/auth/phone_number_lookup_basic_auth.rb'
         | 
| 40 43 | 
             
            require_relative 'bandwidth/voice_lib/voice'
         | 
| 41 44 | 
             
            require_relative 'bandwidth/http/auth/voice_basic_auth.rb'
         | 
| 42 45 | 
             
            require_relative 'bandwidth/web_rtc_lib/web_rtc'
         | 
    
        data/lib/bandwidth/api_helper.rb
    CHANGED
    
    | @@ -68,9 +68,7 @@ module Bandwidth | |
| 68 68 | 
             
                # Appends the given set of parameters to the given query string.
         | 
| 69 69 | 
             
                # @param [String] The query string builder to add the query parameters to.
         | 
| 70 70 | 
             
                # @param [Hash] The parameters to append.
         | 
| 71 | 
            -
                 | 
| 72 | 
            -
                def self.append_url_with_query_parameters(query_builder, parameters,
         | 
| 73 | 
            -
                                                          array_serialization: 'indexed')
         | 
| 71 | 
            +
                def self.append_url_with_query_parameters(query_builder, parameters)
         | 
| 74 72 | 
             
                  # Perform parameter validation.
         | 
| 75 73 | 
             
                  unless query_builder.instance_of? String
         | 
| 76 74 | 
             
                    raise ArgumentError, 'Given value for parameter \"query_builder\"
         | 
| @@ -80,6 +78,8 @@ module Bandwidth | |
| 80 78 | 
             
                  # Return if there are no parameters to replace.
         | 
| 81 79 | 
             
                  return query_builder if parameters.nil?
         | 
| 82 80 |  | 
| 81 | 
            +
                  array_serialization = 'indexed'
         | 
| 82 | 
            +
             | 
| 83 83 | 
             
                  parameters.each do |key, value|
         | 
| 84 84 | 
             
                    seperator = query_builder.include?('?') ? '&' : '?'
         | 
| 85 85 | 
             
                    unless value.nil?
         | 
| @@ -156,8 +156,8 @@ module Bandwidth | |
| 156 156 | 
             
                # Form encodes a hash of parameters.
         | 
| 157 157 | 
             
                # @param [Hash] The hash of parameters to encode.
         | 
| 158 158 | 
             
                # @return [Hash] A hash with the same parameters form encoded.
         | 
| 159 | 
            -
                def self.form_encode_parameters(form_parameters | 
| 160 | 
            -
             | 
| 159 | 
            +
                def self.form_encode_parameters(form_parameters)
         | 
| 160 | 
            +
                  array_serialization = 'indexed'
         | 
| 161 161 | 
             
                  encoded = {}
         | 
| 162 162 | 
             
                  form_parameters.each do |key, value|
         | 
| 163 163 | 
             
                    encoded.merge!(APIHelper.form_encode(value, key, formatting:
         | 
| @@ -273,17 +273,5 @@ module Bandwidth | |
| 273 273 | 
             
                  end
         | 
| 274 274 | 
             
                  val
         | 
| 275 275 | 
             
                end
         | 
| 276 | 
            -
             | 
| 277 | 
            -
                # Safely converts a string into an rfc3339 DateTime object
         | 
| 278 | 
            -
                # @param [String] The datetime string
         | 
| 279 | 
            -
                # @return [DateTime] A DateTime object of rfc3339 format
         | 
| 280 | 
            -
                def self.rfc3339(date_time)
         | 
| 281 | 
            -
                  # missing timezone information
         | 
| 282 | 
            -
                  if date_time.end_with?('Z') || date_time.index('+')
         | 
| 283 | 
            -
                    DateTime.rfc3339(date_time)
         | 
| 284 | 
            -
                  else
         | 
| 285 | 
            -
                    DateTime.rfc3339(date_time + 'Z')
         | 
| 286 | 
            -
                  end
         | 
| 287 | 
            -
                end
         | 
| 288 276 | 
             
              end
         | 
| 289 277 | 
             
            end
         | 
    
        data/lib/bandwidth/client.rb
    CHANGED
    
    | @@ -12,10 +12,15 @@ module Bandwidth | |
| 12 12 | 
             
                def messaging_client
         | 
| 13 13 | 
             
                  @messaging_client ||= Messaging::Client.new(config: config)
         | 
| 14 14 | 
             
                end
         | 
| 15 | 
            -
                # Access to  | 
| 16 | 
            -
                # @return [ | 
| 17 | 
            -
                def  | 
| 18 | 
            -
                  @ | 
| 15 | 
            +
                # Access to multi_factor_auth_client controller.
         | 
| 16 | 
            +
                # @return [MultiFactorAuth::Client] Returns the client instance.
         | 
| 17 | 
            +
                def multi_factor_auth_client
         | 
| 18 | 
            +
                  @multi_factor_auth_client ||= MultiFactorAuth::Client.new(config: config)
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
                # Access to phone_number_lookup_client controller.
         | 
| 21 | 
            +
                # @return [PhoneNumberLookup::Client] Returns the client instance.
         | 
| 22 | 
            +
                def phone_number_lookup_client
         | 
| 23 | 
            +
                  @phone_number_lookup_client ||= PhoneNumberLookup::Client.new(config: config)
         | 
| 19 24 | 
             
                end
         | 
| 20 25 | 
             
                # Access to voice_client controller.
         | 
| 21 26 | 
             
                # @return [Voice::Client] Returns the client instance.
         | 
| @@ -29,12 +34,17 @@ module Bandwidth | |
| 29 34 | 
             
                end
         | 
| 30 35 |  | 
| 31 36 | 
             
                def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
         | 
| 32 | 
            -
                               backoff_factor:  | 
| 37 | 
            +
                               backoff_factor: 2,
         | 
| 38 | 
            +
                               retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524, 408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
         | 
| 39 | 
            +
                               retry_methods: %i[get put get put],
         | 
| 40 | 
            +
                               environment: Environment::PRODUCTION,
         | 
| 33 41 | 
             
                               base_url: 'https://www.example.com',
         | 
| 34 42 | 
             
                               messaging_basic_auth_user_name: 'TODO: Replace',
         | 
| 35 43 | 
             
                               messaging_basic_auth_password: 'TODO: Replace',
         | 
| 36 | 
            -
                                | 
| 37 | 
            -
                                | 
| 44 | 
            +
                               multi_factor_auth_basic_auth_user_name: 'TODO: Replace',
         | 
| 45 | 
            +
                               multi_factor_auth_basic_auth_password: 'TODO: Replace',
         | 
| 46 | 
            +
                               phone_number_lookup_basic_auth_user_name: 'TODO: Replace',
         | 
| 47 | 
            +
                               phone_number_lookup_basic_auth_password: 'TODO: Replace',
         | 
| 38 48 | 
             
                               voice_basic_auth_user_name: 'TODO: Replace',
         | 
| 39 49 | 
             
                               voice_basic_auth_password: 'TODO: Replace',
         | 
| 40 50 | 
             
                               web_rtc_basic_auth_user_name: 'TODO: Replace',
         | 
| @@ -43,12 +53,16 @@ module Bandwidth | |
| 43 53 | 
             
                              Configuration.new(timeout: timeout, max_retries: max_retries,
         | 
| 44 54 | 
             
                                                retry_interval: retry_interval,
         | 
| 45 55 | 
             
                                                backoff_factor: backoff_factor,
         | 
| 56 | 
            +
                                                retry_statuses: retry_statuses,
         | 
| 57 | 
            +
                                                retry_methods: retry_methods,
         | 
| 46 58 | 
             
                                                environment: environment,
         | 
| 47 59 | 
             
                                                base_url: base_url,
         | 
| 48 60 | 
             
                                                messaging_basic_auth_user_name: messaging_basic_auth_user_name,
         | 
| 49 61 | 
             
                                                messaging_basic_auth_password: messaging_basic_auth_password,
         | 
| 50 | 
            -
                                                 | 
| 51 | 
            -
                                                 | 
| 62 | 
            +
                                                multi_factor_auth_basic_auth_user_name: multi_factor_auth_basic_auth_user_name,
         | 
| 63 | 
            +
                                                multi_factor_auth_basic_auth_password: multi_factor_auth_basic_auth_password,
         | 
| 64 | 
            +
                                                phone_number_lookup_basic_auth_user_name: phone_number_lookup_basic_auth_user_name,
         | 
| 65 | 
            +
                                                phone_number_lookup_basic_auth_password: phone_number_lookup_basic_auth_password,
         | 
| 52 66 | 
             
                                                voice_basic_auth_user_name: voice_basic_auth_user_name,
         | 
| 53 67 | 
             
                                                voice_basic_auth_password: voice_basic_auth_password,
         | 
| 54 68 | 
             
                                                web_rtc_basic_auth_user_name: web_rtc_basic_auth_user_name,
         | 
| @@ -17,7 +17,8 @@ module Bandwidth | |
| 17 17 | 
             
                SERVER = [
         | 
| 18 18 | 
             
                  DEFAULT = 'default'.freeze,
         | 
| 19 19 | 
             
                  MESSAGINGDEFAULT = 'MessagingDefault'.freeze,
         | 
| 20 | 
            -
                   | 
| 20 | 
            +
                  MULTIFACTORAUTHDEFAULT = 'MultiFactorAuthDefault'.freeze,
         | 
| 21 | 
            +
                  PHONENUMBERLOOKUPDEFAULT = 'PhoneNumberLookupDefault'.freeze,
         | 
| 21 22 | 
             
                  VOICEDEFAULT = 'VoiceDefault'.freeze,
         | 
| 22 23 | 
             
                  WEBRTCDEFAULT = 'WebRtcDefault'.freeze
         | 
| 23 24 | 
             
                ].freeze
         | 
| @@ -32,12 +33,16 @@ module Bandwidth | |
| 32 33 | 
             
                attr_reader :max_retries
         | 
| 33 34 | 
             
                attr_reader :retry_interval
         | 
| 34 35 | 
             
                attr_reader :backoff_factor
         | 
| 36 | 
            +
                attr_reader :retry_statuses
         | 
| 37 | 
            +
                attr_reader :retry_methods
         | 
| 35 38 | 
             
                attr_reader :environment
         | 
| 36 39 | 
             
                attr_reader :base_url
         | 
| 37 40 | 
             
                attr_reader :messaging_basic_auth_user_name
         | 
| 38 41 | 
             
                attr_reader :messaging_basic_auth_password
         | 
| 39 | 
            -
                attr_reader : | 
| 40 | 
            -
                attr_reader : | 
| 42 | 
            +
                attr_reader :multi_factor_auth_basic_auth_user_name
         | 
| 43 | 
            +
                attr_reader :multi_factor_auth_basic_auth_password
         | 
| 44 | 
            +
                attr_reader :phone_number_lookup_basic_auth_user_name
         | 
| 45 | 
            +
                attr_reader :phone_number_lookup_basic_auth_password
         | 
| 41 46 | 
             
                attr_reader :voice_basic_auth_user_name
         | 
| 42 47 | 
             
                attr_reader :voice_basic_auth_password
         | 
| 43 48 | 
             
                attr_reader :web_rtc_basic_auth_user_name
         | 
| @@ -48,12 +53,17 @@ module Bandwidth | |
| 48 53 | 
             
                end
         | 
| 49 54 |  | 
| 50 55 | 
             
                def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
         | 
| 51 | 
            -
                               backoff_factor:  | 
| 56 | 
            +
                               backoff_factor: 2,
         | 
| 57 | 
            +
                               retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524, 408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
         | 
| 58 | 
            +
                               retry_methods: %i[get put get put],
         | 
| 59 | 
            +
                               environment: Environment::PRODUCTION,
         | 
| 52 60 | 
             
                               base_url: 'https://www.example.com',
         | 
| 53 61 | 
             
                               messaging_basic_auth_user_name: 'TODO: Replace',
         | 
| 54 62 | 
             
                               messaging_basic_auth_password: 'TODO: Replace',
         | 
| 55 | 
            -
                                | 
| 56 | 
            -
                                | 
| 63 | 
            +
                               multi_factor_auth_basic_auth_user_name: 'TODO: Replace',
         | 
| 64 | 
            +
                               multi_factor_auth_basic_auth_password: 'TODO: Replace',
         | 
| 65 | 
            +
                               phone_number_lookup_basic_auth_user_name: 'TODO: Replace',
         | 
| 66 | 
            +
                               phone_number_lookup_basic_auth_password: 'TODO: Replace',
         | 
| 57 67 | 
             
                               voice_basic_auth_user_name: 'TODO: Replace',
         | 
| 58 68 | 
             
                               voice_basic_auth_password: 'TODO: Replace',
         | 
| 59 69 | 
             
                               web_rtc_basic_auth_user_name: 'TODO: Replace',
         | 
| @@ -71,6 +81,12 @@ module Bandwidth | |
| 71 81 | 
             
                  # by in order to provide backoff
         | 
| 72 82 | 
             
                  @backoff_factor = backoff_factor
         | 
| 73 83 |  | 
| 84 | 
            +
                  # A list of HTTP statuses to retry
         | 
| 85 | 
            +
                  @retry_statuses = retry_statuses
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                  # A list of HTTP methods to retry
         | 
| 88 | 
            +
                  @retry_methods = retry_methods
         | 
| 89 | 
            +
             | 
| 74 90 | 
             
                  # Current API environment
         | 
| 75 91 | 
             
                  @environment = String(environment)
         | 
| 76 92 |  | 
| @@ -84,10 +100,16 @@ module Bandwidth | |
| 84 100 | 
             
                  @messaging_basic_auth_password = messaging_basic_auth_password
         | 
| 85 101 |  | 
| 86 102 | 
             
                  # The username to use with basic authentication
         | 
| 87 | 
            -
                  @ | 
| 103 | 
            +
                  @multi_factor_auth_basic_auth_user_name = multi_factor_auth_basic_auth_user_name
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                  # The password to use with basic authentication
         | 
| 106 | 
            +
                  @multi_factor_auth_basic_auth_password = multi_factor_auth_basic_auth_password
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                  # The username to use with basic authentication
         | 
| 109 | 
            +
                  @phone_number_lookup_basic_auth_user_name = phone_number_lookup_basic_auth_user_name
         | 
| 88 110 |  | 
| 89 111 | 
             
                  # The password to use with basic authentication
         | 
| 90 | 
            -
                  @ | 
| 112 | 
            +
                  @phone_number_lookup_basic_auth_password = phone_number_lookup_basic_auth_password
         | 
| 91 113 |  | 
| 92 114 | 
             
                  # The username to use with basic authentication
         | 
| 93 115 | 
             
                  @voice_basic_auth_user_name = voice_basic_auth_user_name
         | 
| @@ -106,11 +128,14 @@ module Bandwidth | |
| 106 128 | 
             
                end
         | 
| 107 129 |  | 
| 108 130 | 
             
                def clone_with(timeout: nil, max_retries: nil, retry_interval: nil,
         | 
| 109 | 
            -
                               backoff_factor: nil,  | 
| 131 | 
            +
                               backoff_factor: nil, retry_statuses: nil, retry_methods: nil,
         | 
| 132 | 
            +
                               environment: nil, base_url: nil,
         | 
| 110 133 | 
             
                               messaging_basic_auth_user_name: nil,
         | 
| 111 134 | 
             
                               messaging_basic_auth_password: nil,
         | 
| 112 | 
            -
                                | 
| 113 | 
            -
                                | 
| 135 | 
            +
                               multi_factor_auth_basic_auth_user_name: nil,
         | 
| 136 | 
            +
                               multi_factor_auth_basic_auth_password: nil,
         | 
| 137 | 
            +
                               phone_number_lookup_basic_auth_user_name: nil,
         | 
| 138 | 
            +
                               phone_number_lookup_basic_auth_password: nil,
         | 
| 114 139 | 
             
                               voice_basic_auth_user_name: nil,
         | 
| 115 140 | 
             
                               voice_basic_auth_password: nil,
         | 
| 116 141 | 
             
                               web_rtc_basic_auth_user_name: nil,
         | 
| @@ -119,12 +144,16 @@ module Bandwidth | |
| 119 144 | 
             
                  max_retries ||= self.max_retries
         | 
| 120 145 | 
             
                  retry_interval ||= self.retry_interval
         | 
| 121 146 | 
             
                  backoff_factor ||= self.backoff_factor
         | 
| 147 | 
            +
                  retry_statuses ||= self.retry_statuses
         | 
| 148 | 
            +
                  retry_methods ||= self.retry_methods
         | 
| 122 149 | 
             
                  environment ||= self.environment
         | 
| 123 150 | 
             
                  base_url ||= self.base_url
         | 
| 124 151 | 
             
                  messaging_basic_auth_user_name ||= self.messaging_basic_auth_user_name
         | 
| 125 152 | 
             
                  messaging_basic_auth_password ||= self.messaging_basic_auth_password
         | 
| 126 | 
            -
                   | 
| 127 | 
            -
                   | 
| 153 | 
            +
                  multi_factor_auth_basic_auth_user_name ||= self.multi_factor_auth_basic_auth_user_name
         | 
| 154 | 
            +
                  multi_factor_auth_basic_auth_password ||= self.multi_factor_auth_basic_auth_password
         | 
| 155 | 
            +
                  phone_number_lookup_basic_auth_user_name ||= self.phone_number_lookup_basic_auth_user_name
         | 
| 156 | 
            +
                  phone_number_lookup_basic_auth_password ||= self.phone_number_lookup_basic_auth_password
         | 
| 128 157 | 
             
                  voice_basic_auth_user_name ||= self.voice_basic_auth_user_name
         | 
| 129 158 | 
             
                  voice_basic_auth_password ||= self.voice_basic_auth_password
         | 
| 130 159 | 
             
                  web_rtc_basic_auth_user_name ||= self.web_rtc_basic_auth_user_name
         | 
| @@ -133,11 +162,14 @@ module Bandwidth | |
| 133 162 | 
             
                  Configuration.new(
         | 
| 134 163 | 
             
                    timeout: timeout, max_retries: max_retries,
         | 
| 135 164 | 
             
                    retry_interval: retry_interval, backoff_factor: backoff_factor,
         | 
| 165 | 
            +
                    retry_statuses: retry_statuses, retry_methods: retry_methods,
         | 
| 136 166 | 
             
                    environment: environment, base_url: base_url,
         | 
| 137 167 | 
             
                    messaging_basic_auth_user_name: messaging_basic_auth_user_name,
         | 
| 138 168 | 
             
                    messaging_basic_auth_password: messaging_basic_auth_password,
         | 
| 139 | 
            -
                     | 
| 140 | 
            -
                     | 
| 169 | 
            +
                    multi_factor_auth_basic_auth_user_name: multi_factor_auth_basic_auth_user_name,
         | 
| 170 | 
            +
                    multi_factor_auth_basic_auth_password: multi_factor_auth_basic_auth_password,
         | 
| 171 | 
            +
                    phone_number_lookup_basic_auth_user_name: phone_number_lookup_basic_auth_user_name,
         | 
| 172 | 
            +
                    phone_number_lookup_basic_auth_password: phone_number_lookup_basic_auth_password,
         | 
| 141 173 | 
             
                    voice_basic_auth_user_name: voice_basic_auth_user_name,
         | 
| 142 174 | 
             
                    voice_basic_auth_password: voice_basic_auth_password,
         | 
| 143 175 | 
             
                    web_rtc_basic_auth_user_name: web_rtc_basic_auth_user_name,
         | 
| @@ -148,7 +180,9 @@ module Bandwidth | |
| 148 180 | 
             
                def create_http_client
         | 
| 149 181 | 
             
                  FaradayClient.new(timeout: timeout, max_retries: max_retries,
         | 
| 150 182 | 
             
                                    retry_interval: retry_interval,
         | 
| 151 | 
            -
                                    backoff_factor: backoff_factor | 
| 183 | 
            +
                                    backoff_factor: backoff_factor,
         | 
| 184 | 
            +
                                    retry_statuses: retry_statuses,
         | 
| 185 | 
            +
                                    retry_methods: retry_methods)
         | 
| 152 186 | 
             
                end
         | 
| 153 187 |  | 
| 154 188 | 
             
                # All the environments the SDK can run in.
         | 
| @@ -156,14 +190,16 @@ module Bandwidth | |
| 156 190 | 
             
                  Environment::PRODUCTION => {
         | 
| 157 191 | 
             
                    Server::DEFAULT => 'api.bandwidth.com',
         | 
| 158 192 | 
             
                    Server::MESSAGINGDEFAULT => 'https://messaging.bandwidth.com/api/v2',
         | 
| 159 | 
            -
                    Server:: | 
| 193 | 
            +
                    Server::MULTIFACTORAUTHDEFAULT => 'https://mfa.bandwidth.com/api/v1',
         | 
| 194 | 
            +
                    Server::PHONENUMBERLOOKUPDEFAULT => 'https://numbers.bandwidth.com/api/v1',
         | 
| 160 195 | 
             
                    Server::VOICEDEFAULT => 'https://voice.bandwidth.com',
         | 
| 161 196 | 
             
                    Server::WEBRTCDEFAULT => 'https://api.webrtc.bandwidth.com/v1'
         | 
| 162 197 | 
             
                  },
         | 
| 163 198 | 
             
                  Environment::CUSTOM => {
         | 
| 164 199 | 
             
                    Server::DEFAULT => '{base_url}',
         | 
| 165 200 | 
             
                    Server::MESSAGINGDEFAULT => '{base_url}',
         | 
| 166 | 
            -
                    Server:: | 
| 201 | 
            +
                    Server::MULTIFACTORAUTHDEFAULT => '{base_url}',
         | 
| 202 | 
            +
                    Server::PHONENUMBERLOOKUPDEFAULT => '{base_url}',
         | 
| 167 203 | 
             
                    Server::VOICEDEFAULT => '{base_url}',
         | 
| 168 204 | 
             
                    Server::WEBRTCDEFAULT => '{base_url}'
         | 
| 169 205 | 
             
                  }
         |