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
| @@ -4,8 +4,8 @@ | |
| 4 4 | 
             
            # ( https://apimatic.io ).
         | 
| 5 5 |  | 
| 6 6 | 
             
            module Bandwidth
         | 
| 7 | 
            -
              #  | 
| 8 | 
            -
              class  | 
| 7 | 
            +
              # ModifyConferenceRequest Model.
         | 
| 8 | 
            +
              class ModifyConferenceRequest < BaseModel
         | 
| 9 9 | 
             
                # TODO: Write general description for this method
         | 
| 10 10 | 
             
                # @return [StatusEnum]
         | 
| 11 11 | 
             
                attr_accessor :status
         | 
| @@ -93,15 +93,15 @@ module Bandwidth | |
| 93 93 | 
             
                  fallback_password = hash['fallbackPassword']
         | 
| 94 94 |  | 
| 95 95 | 
             
                  # Create object from extracted values.
         | 
| 96 | 
            -
                   | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 96 | 
            +
                  ModifyConferenceRequest.new(status,
         | 
| 97 | 
            +
                                              redirect_url,
         | 
| 98 | 
            +
                                              redirect_fallback_url,
         | 
| 99 | 
            +
                                              redirect_method,
         | 
| 100 | 
            +
                                              redirect_fallback_method,
         | 
| 101 | 
            +
                                              username,
         | 
| 102 | 
            +
                                              password,
         | 
| 103 | 
            +
                                              fallback_username,
         | 
| 104 | 
            +
                                              fallback_password)
         | 
| 105 105 | 
             
                end
         | 
| 106 106 | 
             
              end
         | 
| 107 107 | 
             
            end
         | 
| @@ -7,11 +7,14 @@ module Bandwidth | |
| 7 7 | 
             
              # State1.
         | 
| 8 8 | 
             
              class State1Enum
         | 
| 9 9 | 
             
                STATE1_ENUM = [
         | 
| 10 | 
            -
                  # TODO: Write general description for  | 
| 11 | 
            -
                   | 
| 10 | 
            +
                  # TODO: Write general description for NOT_RECORDING
         | 
| 11 | 
            +
                  NOT_RECORDING = 'NOT_RECORDING'.freeze,
         | 
| 12 12 |  | 
| 13 | 
            -
                  # TODO: Write general description for  | 
| 14 | 
            -
                   | 
| 13 | 
            +
                  # TODO: Write general description for PAUSED
         | 
| 14 | 
            +
                  PAUSED = 'PAUSED'.freeze,
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  # TODO: Write general description for RECORDING
         | 
| 17 | 
            +
                  RECORDING = 'RECORDING'.freeze
         | 
| 15 18 | 
             
                ].freeze
         | 
| 16 19 | 
             
              end
         | 
| 17 20 | 
             
            end
         | 
| @@ -7,14 +7,11 @@ module Bandwidth | |
| 7 7 | 
             
              # State.
         | 
| 8 8 | 
             
              class StateEnum
         | 
| 9 9 | 
             
                STATE_ENUM = [
         | 
| 10 | 
            -
                  # TODO: Write general description for  | 
| 11 | 
            -
                   | 
| 10 | 
            +
                  # TODO: Write general description for ACTIVE
         | 
| 11 | 
            +
                  ACTIVE = 'active'.freeze,
         | 
| 12 12 |  | 
| 13 | 
            -
                  # TODO: Write general description for  | 
| 14 | 
            -
                   | 
| 15 | 
            -
             | 
| 16 | 
            -
                  # TODO: Write general description for INITIATED
         | 
| 17 | 
            -
                  INITIATED = 'INITIATED'.freeze
         | 
| 13 | 
            +
                  # TODO: Write general description for COMPLETED
         | 
| 14 | 
            +
                  COMPLETED = 'completed'.freeze
         | 
| 18 15 | 
             
                ].freeze
         | 
| 19 16 | 
             
              end
         | 
| 20 17 | 
             
            end
         | 
| @@ -4,8 +4,8 @@ | |
| 4 4 | 
             
            # ( https://apimatic.io ).
         | 
| 5 5 |  | 
| 6 6 | 
             
            module Bandwidth
         | 
| 7 | 
            -
              #  | 
| 8 | 
            -
              class  | 
| 7 | 
            +
              # TranscribeRecordingRequest Model.
         | 
| 8 | 
            +
              class TranscribeRecordingRequest < BaseModel
         | 
| 9 9 | 
             
                # TODO: Write general description for this method
         | 
| 10 10 | 
             
                # @return [String]
         | 
| 11 11 | 
             
                attr_accessor :callback_url
         | 
| @@ -69,12 +69,12 @@ module Bandwidth | |
| 69 69 | 
             
                  callback_timeout = hash['callbackTimeout']
         | 
| 70 70 |  | 
| 71 71 | 
             
                  # Create object from extracted values.
         | 
| 72 | 
            -
                   | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 72 | 
            +
                  TranscribeRecordingRequest.new(callback_url,
         | 
| 73 | 
            +
                                                 callback_method,
         | 
| 74 | 
            +
                                                 username,
         | 
| 75 | 
            +
                                                 password,
         | 
| 76 | 
            +
                                                 tag,
         | 
| 77 | 
            +
                                                 callback_timeout)
         | 
| 78 78 | 
             
                end
         | 
| 79 79 | 
             
              end
         | 
| 80 80 | 
             
            end
         | 
| @@ -4,21 +4,30 @@ | |
| 4 4 | 
             
            # ( https://apimatic.io ).
         | 
| 5 5 |  | 
| 6 6 | 
             
            module Bandwidth
         | 
| 7 | 
            -
              #  | 
| 8 | 
            -
              class  | 
| 7 | 
            +
              # TranscriptionMetadata Model.
         | 
| 8 | 
            +
              class TranscriptionMetadata < BaseModel
         | 
| 9 9 | 
             
                # TODO: Write general description for this method
         | 
| 10 10 | 
             
                # @return [String]
         | 
| 11 11 | 
             
                attr_accessor :id
         | 
| 12 12 |  | 
| 13 | 
            -
                #  | 
| 14 | 
            -
                #  | 
| 13 | 
            +
                # The current status of the transcription. Current values are 'none',
         | 
| 14 | 
            +
                # 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and
         | 
| 15 | 
            +
                # 'file-size-too-small'. Additional states may be added in the future, so
         | 
| 16 | 
            +
                # your application must be tolerant of unknown values.
         | 
| 17 | 
            +
                # @return [String]
         | 
| 15 18 | 
             
                attr_accessor :status
         | 
| 16 19 |  | 
| 17 | 
            -
                #  | 
| 20 | 
            +
                # The current status of the transcription. Current values are 'none',
         | 
| 21 | 
            +
                # 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and
         | 
| 22 | 
            +
                # 'file-size-too-small'. Additional states may be added in the future, so
         | 
| 23 | 
            +
                # your application must be tolerant of unknown values.
         | 
| 18 24 | 
             
                # @return [String]
         | 
| 19 25 | 
             
                attr_accessor :completed_time
         | 
| 20 26 |  | 
| 21 | 
            -
                #  | 
| 27 | 
            +
                # The current status of the transcription. Current values are 'none',
         | 
| 28 | 
            +
                # 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and
         | 
| 29 | 
            +
                # 'file-size-too-small'. Additional states may be added in the future, so
         | 
| 30 | 
            +
                # your application must be tolerant of unknown values.
         | 
| 22 31 | 
             
                # @return [String]
         | 
| 23 32 | 
             
                attr_accessor :url
         | 
| 24 33 |  | 
| @@ -53,10 +62,10 @@ module Bandwidth | |
| 53 62 | 
             
                  url = hash['url']
         | 
| 54 63 |  | 
| 55 64 | 
             
                  # Create object from extracted values.
         | 
| 56 | 
            -
                   | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 65 | 
            +
                  TranscriptionMetadata.new(id,
         | 
| 66 | 
            +
                                            status,
         | 
| 67 | 
            +
                                            completed_time,
         | 
| 68 | 
            +
                                            url)
         | 
| 60 69 | 
             
                end
         | 
| 61 70 | 
             
              end
         | 
| 62 71 | 
             
            end
         | 
| @@ -6,8 +6,13 @@ | |
| 6 6 |  | 
| 7 7 | 
             
            module Bandwidth
         | 
| 8 8 | 
             
              module WebRtc
         | 
| 9 | 
            -
                def generate_bxml(device_token, sip_uri="sip:sipx.webrtc.bandwidth.com:5060")
         | 
| 10 | 
            -
                    return '<?xml version="1.0" encoding="UTF-8"?><Response | 
| 9 | 
            +
                def generate_bxml(device_token, voice_call_id, sip_uri="sip:sipx.webrtc.bandwidth.com:5060")
         | 
| 10 | 
            +
                    return '<?xml version="1.0" encoding="UTF-8"?><Response>' + generate_transfer_bxml_verb(device_token, voice_call_id, sip_uri) + '</Response>'
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def generate_transfer_bxml_verb(device_token, voice_call_id, sip_uri="sip:sipx.webrtc.bandwidth.com:5060")
         | 
| 14 | 
            +
                    voice_call_id = voice_call_id.split("-", 2).last.split("-").join()
         | 
| 15 | 
            +
                    return '<Transfer><SipUri uui="%s;encoding=base64,%s;encoding=jwt">%s</SipUri></Transfer>' % [voice_call_id, device_token, sip_uri]
         | 
| 11 16 | 
             
                end
         | 
| 12 17 | 
             
              end
         | 
| 13 18 | 
             
            end
         | 
| @@ -16,12 +16,17 @@ module Bandwidth | |
| 16 16 | 
             
                    end
         | 
| 17 17 |  | 
| 18 18 | 
             
                    def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
         | 
| 19 | 
            -
                                   backoff_factor:  | 
| 19 | 
            +
                                   backoff_factor: 2,
         | 
| 20 | 
            +
                                   retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524, 408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
         | 
| 21 | 
            +
                                   retry_methods: %i[get put get put],
         | 
| 22 | 
            +
                                   environment: Environment::PRODUCTION,
         | 
| 20 23 | 
             
                                   base_url: 'https://www.example.com',
         | 
| 21 24 | 
             
                                   messaging_basic_auth_user_name: 'TODO: Replace',
         | 
| 22 25 | 
             
                                   messaging_basic_auth_password: 'TODO: Replace',
         | 
| 23 | 
            -
                                    | 
| 24 | 
            -
                                    | 
| 26 | 
            +
                                   multi_factor_auth_basic_auth_user_name: 'TODO: Replace',
         | 
| 27 | 
            +
                                   multi_factor_auth_basic_auth_password: 'TODO: Replace',
         | 
| 28 | 
            +
                                   phone_number_lookup_basic_auth_user_name: 'TODO: Replace',
         | 
| 29 | 
            +
                                   phone_number_lookup_basic_auth_password: 'TODO: Replace',
         | 
| 25 30 | 
             
                                   voice_basic_auth_user_name: 'TODO: Replace',
         | 
| 26 31 | 
             
                                   voice_basic_auth_password: 'TODO: Replace',
         | 
| 27 32 | 
             
                                   web_rtc_basic_auth_user_name: 'TODO: Replace',
         | 
| @@ -32,12 +37,16 @@ module Bandwidth | |
| 32 37 | 
             
                                                    max_retries: max_retries,
         | 
| 33 38 | 
             
                                                    retry_interval: retry_interval,
         | 
| 34 39 | 
             
                                                    backoff_factor: backoff_factor,
         | 
| 40 | 
            +
                                                    retry_statuses: retry_statuses,
         | 
| 41 | 
            +
                                                    retry_methods: retry_methods,
         | 
| 35 42 | 
             
                                                    environment: environment,
         | 
| 36 43 | 
             
                                                    base_url: base_url,
         | 
| 37 44 | 
             
                                                    messaging_basic_auth_user_name: messaging_basic_auth_user_name,
         | 
| 38 45 | 
             
                                                    messaging_basic_auth_password: messaging_basic_auth_password,
         | 
| 39 | 
            -
                                                     | 
| 40 | 
            -
                                                     | 
| 46 | 
            +
                                                    multi_factor_auth_basic_auth_user_name: multi_factor_auth_basic_auth_user_name,
         | 
| 47 | 
            +
                                                    multi_factor_auth_basic_auth_password: multi_factor_auth_basic_auth_password,
         | 
| 48 | 
            +
                                                    phone_number_lookup_basic_auth_user_name: phone_number_lookup_basic_auth_user_name,
         | 
| 49 | 
            +
                                                    phone_number_lookup_basic_auth_password: phone_number_lookup_basic_auth_password,
         | 
| 41 50 | 
             
                                                    voice_basic_auth_user_name: voice_basic_auth_user_name,
         | 
| 42 51 | 
             
                                                    voice_basic_auth_password: voice_basic_auth_password,
         | 
| 43 52 | 
             
                                                    web_rtc_basic_auth_user_name: web_rtc_basic_auth_user_name,
         | 
| @@ -498,20 +498,20 @@ module WebRtc | |
| 498 498 | 
             
                # This will automatically remove any subscriptions the participant has
         | 
| 499 499 | 
             
                # associated with this session
         | 
| 500 500 | 
             
                # @param [String] account_id Required parameter: Account ID
         | 
| 501 | 
            -
                # @param [String] participant_id Required parameter: Participant ID
         | 
| 502 501 | 
             
                # @param [String] session_id Required parameter: Session ID
         | 
| 502 | 
            +
                # @param [String] participant_id Required parameter: Participant ID
         | 
| 503 503 | 
             
                # @return [void] response from the API call
         | 
| 504 504 | 
             
                def remove_participant_from_session(account_id,
         | 
| 505 | 
            -
                                                     | 
| 506 | 
            -
                                                     | 
| 505 | 
            +
                                                    session_id,
         | 
| 506 | 
            +
                                                    participant_id)
         | 
| 507 507 | 
             
                  # Prepare query url.
         | 
| 508 508 | 
             
                  _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
         | 
| 509 509 | 
             
                  _query_builder << '/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}'
         | 
| 510 510 | 
             
                  _query_builder = APIHelper.append_url_with_template_parameters(
         | 
| 511 511 | 
             
                    _query_builder,
         | 
| 512 512 | 
             
                    'accountId' => { 'value' => account_id, 'encode' => false },
         | 
| 513 | 
            -
                    ' | 
| 514 | 
            -
                    ' | 
| 513 | 
            +
                    'sessionId' => { 'value' => session_id, 'encode' => false },
         | 
| 514 | 
            +
                    'participantId' => { 'value' => participant_id, 'encode' => false }
         | 
| 515 515 | 
             
                  )
         | 
| 516 516 | 
             
                  _query_url = APIHelper.clean_url _query_builder
         | 
| 517 517 |  | 
| @@ -553,20 +553,20 @@ module WebRtc | |
| 553 553 |  | 
| 554 554 | 
             
                # Get a participant's subscriptions
         | 
| 555 555 | 
             
                # @param [String] account_id Required parameter: Account ID
         | 
| 556 | 
            -
                # @param [String] participant_id Required parameter: Participant ID
         | 
| 557 556 | 
             
                # @param [String] session_id Required parameter: Session ID
         | 
| 557 | 
            +
                # @param [String] participant_id Required parameter: Participant ID
         | 
| 558 558 | 
             
                # @return [Subscriptions] response from the API call
         | 
| 559 559 | 
             
                def get_participant_subscriptions(account_id,
         | 
| 560 | 
            -
                                                   | 
| 561 | 
            -
                                                   | 
| 560 | 
            +
                                                  session_id,
         | 
| 561 | 
            +
                                                  participant_id)
         | 
| 562 562 | 
             
                  # Prepare query url.
         | 
| 563 563 | 
             
                  _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
         | 
| 564 564 | 
             
                  _query_builder << '/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}/subscriptions'
         | 
| 565 565 | 
             
                  _query_builder = APIHelper.append_url_with_template_parameters(
         | 
| 566 566 | 
             
                    _query_builder,
         | 
| 567 567 | 
             
                    'accountId' => { 'value' => account_id, 'encode' => false },
         | 
| 568 | 
            -
                    ' | 
| 569 | 
            -
                    ' | 
| 568 | 
            +
                    'sessionId' => { 'value' => session_id, 'encode' => false },
         | 
| 569 | 
            +
                    'participantId' => { 'value' => participant_id, 'encode' => false }
         | 
| 570 570 | 
             
                  )
         | 
| 571 571 | 
             
                  _query_url = APIHelper.clean_url _query_builder
         | 
| 572 572 |  | 
| @@ -621,13 +621,13 @@ module WebRtc | |
| 621 621 | 
             
                # subscriptions. Call this function with no `Subscriptions` object to remove
         | 
| 622 622 | 
             
                # all subscriptions
         | 
| 623 623 | 
             
                # @param [String] account_id Required parameter: Account ID
         | 
| 624 | 
            -
                # @param [String] participant_id Required parameter: Participant ID
         | 
| 625 624 | 
             
                # @param [String] session_id Required parameter: Session ID
         | 
| 625 | 
            +
                # @param [String] participant_id Required parameter: Participant ID
         | 
| 626 626 | 
             
                # @param [Subscriptions] body Optional parameter: Initial state
         | 
| 627 627 | 
             
                # @return [void] response from the API call
         | 
| 628 628 | 
             
                def update_participant_subscriptions(account_id,
         | 
| 629 | 
            -
                                                     participant_id,
         | 
| 630 629 | 
             
                                                     session_id,
         | 
| 630 | 
            +
                                                     participant_id,
         | 
| 631 631 | 
             
                                                     body: nil)
         | 
| 632 632 | 
             
                  # Prepare query url.
         | 
| 633 633 | 
             
                  _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
         | 
| @@ -635,8 +635,8 @@ module WebRtc | |
| 635 635 | 
             
                  _query_builder = APIHelper.append_url_with_template_parameters(
         | 
| 636 636 | 
             
                    _query_builder,
         | 
| 637 637 | 
             
                    'accountId' => { 'value' => account_id, 'encode' => false },
         | 
| 638 | 
            -
                    ' | 
| 639 | 
            -
                    ' | 
| 638 | 
            +
                    'sessionId' => { 'value' => session_id, 'encode' => false },
         | 
| 639 | 
            +
                    'participantId' => { 'value' => participant_id, 'encode' => false }
         | 
| 640 640 | 
             
                  )
         | 
| 641 641 | 
             
                  _query_url = APIHelper.clean_url _query_builder
         | 
| 642 642 |  | 
| @@ -8,10 +8,10 @@ module Bandwidth | |
| 8 8 | 
             
              class DeviceApiVersionEnum
         | 
| 9 9 | 
             
                DEVICE_API_VERSION_ENUM = [
         | 
| 10 10 | 
             
                  # TODO: Write general description for V3
         | 
| 11 | 
            -
                  V3 = ' | 
| 11 | 
            +
                  V3 = 'V3'.freeze,
         | 
| 12 12 |  | 
| 13 13 | 
             
                  # TODO: Write general description for V2
         | 
| 14 | 
            -
                  V2 = ' | 
| 14 | 
            +
                  V2 = 'V2'.freeze
         | 
| 15 15 | 
             
                ].freeze
         | 
| 16 16 | 
             
              end
         | 
| 17 17 | 
             
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            # bandwidth
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # This file was automatically generated by APIMATIC v2.0
         | 
| 4 | 
            +
            # ( https://apimatic.io ).
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            require 'json'
         | 
| 7 | 
            +
            require 'minitest/autorun'
         | 
| 8 | 
            +
            require 'minitest/hell'
         | 
| 9 | 
            +
            require 'minitest/pride'
         | 
| 10 | 
            +
            require 'minitest/proveit'
         | 
| 11 | 
            +
            require 'bandwidth'
         | 
| 12 | 
            +
            require_relative '../test_helper'
         | 
| 13 | 
            +
            require_relative '../http_response_catcher'
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            class ControllerTestBase < Minitest::Test
         | 
| 16 | 
            +
              parallelize_me!
         | 
| 17 | 
            +
              include Bandwidth
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              # Create configuration and set any test parameters
         | 
| 20 | 
            +
              CONFIG = Configuration.new
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # bandwidth
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # This file was automatically generated by APIMATIC v2.0
         | 
| 4 | 
            +
            # ( https://apimatic.io ).
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class HttpResponseCatcher < Bandwidth::HttpCallBack
         | 
| 7 | 
            +
              attr_accessor :response
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              def on_before_request(request)
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              # Catching the response
         | 
| 13 | 
            +
              def on_after_response(response)
         | 
| 14 | 
            +
                @response = response
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
             | 
| 19 | 
            +
             | 
| @@ -8,7 +8,8 @@ require_relative '../../lib/bandwidth.rb' | |
| 8 8 | 
             
            include Bandwidth
         | 
| 9 9 | 
             
            include Bandwidth::Voice
         | 
| 10 10 | 
             
            include Bandwidth::Messaging
         | 
| 11 | 
            -
            include Bandwidth:: | 
| 11 | 
            +
            include Bandwidth::MultiFactorAuth
         | 
| 12 | 
            +
            include Bandwidth::WebRtc
         | 
| 12 13 |  | 
| 13 14 | 
             
            begin
         | 
| 14 15 | 
             
                USERNAME = ENV.fetch("USERNAME")
         | 
| @@ -34,8 +35,10 @@ class IntegrationTest < Test::Unit::TestCase | |
| 34 35 | 
             
                        voice_basic_auth_password: PASSWORD,
         | 
| 35 36 | 
             
                        messaging_basic_auth_user_name: USERNAME,
         | 
| 36 37 | 
             
                        messaging_basic_auth_password: PASSWORD,
         | 
| 37 | 
            -
                         | 
| 38 | 
            -
                         | 
| 38 | 
            +
                        multi_factor_auth_basic_auth_user_name: USERNAME,
         | 
| 39 | 
            +
                        multi_factor_auth_basic_auth_password: PASSWORD,
         | 
| 40 | 
            +
                        phone_number_lookup_basic_auth_user_name: USERNAME,
         | 
| 41 | 
            +
                        phone_number_lookup_basic_auth_password: PASSWORD
         | 
| 39 42 | 
             
                    )
         | 
| 40 43 | 
             
                end
         | 
| 41 44 |  | 
| @@ -56,7 +59,7 @@ class IntegrationTest < Test::Unit::TestCase | |
| 56 59 | 
             
                    body.from = PHONE_NUMBER_OUTBOUND
         | 
| 57 60 | 
             
                    body.text = "Ruby Integration"
         | 
| 58 61 | 
             
                    begin
         | 
| 59 | 
            -
                        @bandwidth_client.messaging_client.client.create_message(ACCOUNT_ID,  | 
| 62 | 
            +
                        @bandwidth_client.messaging_client.client.create_message(ACCOUNT_ID, body)
         | 
| 60 63 | 
             
                        #workaround to make sure that if the above error is not raised, the build will fail
         | 
| 61 64 | 
             
                        assert(false, "Expected exception not raised")
         | 
| 62 65 | 
             
                    rescue MessagingException => e
         | 
| @@ -70,7 +73,7 @@ class IntegrationTest < Test::Unit::TestCase | |
| 70 73 | 
             
                    media_file = '12345' #todo: check a binary string
         | 
| 71 74 |  | 
| 72 75 | 
             
                    #media upload
         | 
| 73 | 
            -
                    @bandwidth_client.messaging_client.client.upload_media(ACCOUNT_ID, media_file_name, media_file | 
| 76 | 
            +
                    @bandwidth_client.messaging_client.client.upload_media(ACCOUNT_ID, media_file_name, media_file, :content_type => "application/octet-stream", :cache_control => "no-cache")
         | 
| 74 77 |  | 
| 75 78 | 
             
                    #media download
         | 
| 76 79 | 
             
                    downloaded_media_file = @bandwidth_client.messaging_client.client.get_media(ACCOUNT_ID, media_file_name).data
         | 
| @@ -79,21 +82,21 @@ class IntegrationTest < Test::Unit::TestCase | |
| 79 82 | 
             
                end
         | 
| 80 83 |  | 
| 81 84 | 
             
                def test_create_call_and_get_call_state
         | 
| 82 | 
            -
                    body =  | 
| 85 | 
            +
                    body = CreateCallRequest.new
         | 
| 83 86 | 
             
                    body.from = PHONE_NUMBER_OUTBOUND
         | 
| 84 87 | 
             
                    body.to = PHONE_NUMBER_INBOUND
         | 
| 85 88 | 
             
                    body.application_id = VOICE_APPLICATION_ID
         | 
| 86 89 | 
             
                    body.answer_url = CALLBACK_URL
         | 
| 87 | 
            -
                    response = @bandwidth_client.voice_client.client.create_call(ACCOUNT_ID,  | 
| 90 | 
            +
                    response = @bandwidth_client.voice_client.client.create_call(ACCOUNT_ID, body)
         | 
| 88 91 | 
             
                    assert(response.data.call_id.length > 0, "call_id value not set")
         | 
| 89 92 |  | 
| 90 93 | 
             
                    #Get phone call information
         | 
| 91 | 
            -
                    response = @bandwidth_client.voice_client.client. | 
| 94 | 
            +
                    response = @bandwidth_client.voice_client.client.get_call(ACCOUNT_ID, response.data.call_id)
         | 
| 92 95 | 
             
                    assert(response.data.state.length > 0, "state value not set")
         | 
| 93 96 | 
             
                end
         | 
| 94 97 |  | 
| 95 98 | 
             
                def test_create_call_invalid_phone_number
         | 
| 96 | 
            -
                    body =  | 
| 99 | 
            +
                    body = CreateCallRequest.new
         | 
| 97 100 | 
             
                    body.from = PHONE_NUMBER_OUTBOUND
         | 
| 98 101 | 
             
                    body.to = "+1invalid"
         | 
| 99 102 | 
             
                    body.application_id = VOICE_APPLICATION_ID
         | 
| @@ -103,7 +106,7 @@ class IntegrationTest < Test::Unit::TestCase | |
| 103 106 | 
             
                        @bandwidth_client.voice_client.client.create_call(ACCOUNT_ID, :body => body)
         | 
| 104 107 | 
             
                        #workaround to make sure that if the above error is not raised, the build will fail
         | 
| 105 108 | 
             
                        assert(false, "Expected exception not raised")
         | 
| 106 | 
            -
                    rescue  | 
| 109 | 
            +
                    rescue ApiErrorException => e
         | 
| 107 110 | 
             
                        assert(e.description.length > 0, "description value not set")
         | 
| 108 111 | 
             
                    end
         | 
| 109 112 | 
             
                end
         | 
| @@ -471,7 +474,7 @@ class IntegrationTest < Test::Unit::TestCase | |
| 471 474 | 
             
                    body.digits = 6
         | 
| 472 475 | 
             
                    body.message = "Your temporary {NAME} {SCOPE} code is {CODE}"
         | 
| 473 476 |  | 
| 474 | 
            -
                    response = @bandwidth_client. | 
| 477 | 
            +
                    response = @bandwidth_client.multi_factor_auth_client.mfa.create_messaging_two_factor(ACCOUNT_ID, body)
         | 
| 475 478 | 
             
                    assert(response.data.message_id.length > 0, "message id value not set")
         | 
| 476 479 | 
             
                end
         | 
| 477 480 |  | 
| @@ -484,7 +487,7 @@ class IntegrationTest < Test::Unit::TestCase | |
| 484 487 | 
             
                    body.digits = 6
         | 
| 485 488 | 
             
                    body.message = "Your temporary {NAME} {SCOPE} code is {CODE}"
         | 
| 486 489 |  | 
| 487 | 
            -
                    response = @bandwidth_client. | 
| 490 | 
            +
                    response = @bandwidth_client.multi_factor_auth_client.mfa.create_voice_two_factor(ACCOUNT_ID, body)
         | 
| 488 491 | 
             
                    assert(response.data.call_id.length > 0, "call id value not set")
         | 
| 489 492 | 
             
                end
         | 
| 490 493 |  | 
| @@ -495,7 +498,7 @@ class IntegrationTest < Test::Unit::TestCase | |
| 495 498 | 
             
                    body.scope = "scope"
         | 
| 496 499 | 
             
                    body.code = "123456"
         | 
| 497 500 | 
             
                    body.expiration_time_in_minutes = 3
         | 
| 498 | 
            -
                    response = @bandwidth_client. | 
| 501 | 
            +
                    response = @bandwidth_client.multi_factor_auth_client.mfa.create_verify_two_factor(ACCOUNT_ID, body)
         | 
| 499 502 | 
             
                    #Ruby has no check to see if variables are of type boolean
         | 
| 500 503 | 
             
                    #An explicit true/false check is required
         | 
| 501 504 | 
             
                    assert(response.data.valid == true || response.data.valid == false, "'valid' variable is not a boolean")
         | 
| @@ -567,4 +570,27 @@ class IntegrationTest < Test::Unit::TestCase | |
| 567 570 | 
             
                    actual = response.to_bxml()
         | 
| 568 571 | 
             
                    assert_equal(expected, actual)
         | 
| 569 572 | 
             
                end
         | 
| 573 | 
            +
             | 
| 574 | 
            +
                def test_tn_lookup
         | 
| 575 | 
            +
                    body = OrderRequest.new
         | 
| 576 | 
            +
                    body.tns = [PHONE_NUMBER_OUTBOUND]
         | 
| 577 | 
            +
                    create_response = @bandwidth_client.phone_number_lookup_client.client.create_lookup_request(ACCOUNT_ID, body)
         | 
| 578 | 
            +
                    assert(create_response.data.request_id.length > 0, "request_id value not set")
         | 
| 579 | 
            +
             | 
| 580 | 
            +
                    request_id = create_response.data.request_id
         | 
| 581 | 
            +
                    get_response = @bandwidth_client.phone_number_lookup_client.client.get_lookup_request_status(ACCOUNT_ID, request_id)
         | 
| 582 | 
            +
                    assert(get_response.data.status.length > 0, "status value not set")
         | 
| 583 | 
            +
                end
         | 
| 584 | 
            +
             | 
| 585 | 
            +
                def test_webrtc_generate_bxml
         | 
| 586 | 
            +
                    expected = '<?xml version="1.0" encoding="UTF-8"?><Response><Transfer><SipUri uui="93d6f3c0be5845960b744fa28015d8ede84bd1a4;encoding=base64,asdf;encoding=jwt">sip:sipx.webrtc.bandwidth.com:5060</SipUri></Transfer></Response>'
         | 
| 587 | 
            +
                    actual = Bandwidth::WebRtc.generate_bxml('asdf', 'c-93d6f3c0-be584596-0b74-4fa2-8015-d8ede84bd1a4')
         | 
| 588 | 
            +
                    assert_equal(expected, actual)
         | 
| 589 | 
            +
                end
         | 
| 590 | 
            +
             | 
| 591 | 
            +
                def test_webrtc_generate_transfer_bxml_verb
         | 
| 592 | 
            +
                    expected = '<Transfer><SipUri uui="93d6f3c0be5845960b744fa28015d8ede84bd1a4;encoding=base64,asdf;encoding=jwt">sip:sipx.webrtc.bandwidth.com:5060</SipUri></Transfer>'
         | 
| 593 | 
            +
                    actual = Bandwidth::WebRtc.generate_transfer_bxml_verb('asdf', 'c-93d6f3c0-be584596-0b74-4fa2-8015-d8ede84bd1a4')
         | 
| 594 | 
            +
                    assert_equal(expected, actual)
         | 
| 595 | 
            +
                end
         | 
| 570 596 | 
             
            end
         |