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
|