bandwidth-sdk 3.13.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/lib/bandwidth/configuration.rb +1 -1
- data/lib/bandwidth/http/api_response.rb +2 -0
- data/lib/bandwidth/http/faraday_client.rb +9 -2
- data/lib/bandwidth/messaging_lib/messaging.rb +4 -0
- data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +138 -23
- data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +1 -1
- data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message.rb +23 -13
- data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message_item.rb +125 -0
- data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_messages_list.rb +60 -0
- data/lib/bandwidth/messaging_lib/messaging/models/media.rb +4 -4
- data/lib/bandwidth/messaging_lib/messaging/models/message_request.rb +21 -8
- data/lib/bandwidth/messaging_lib/messaging/models/page_info.rb +62 -0
- data/lib/bandwidth/messaging_lib/messaging/models/priority_enum.rb +19 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth.rb +4 -2
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/client.rb +4 -4
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/base_controller.rb +1 -1
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/{api_controller.rb → mfa_controller.rb} +65 -14
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/error_with_request_exception.rb +34 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/{invalid_request_exception.rb → forbidden_request_exception.rb} +5 -5
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/unauthorized_request_exception.rb +29 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_verify_request_schema.rb +0 -19
- data/lib/bandwidth/voice_lib/bxml/verbs/transfer.rb +8 -4
- data/lib/bandwidth/voice_lib/voice.rb +1 -1
- data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +51 -52
- data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +1 -1
- data/lib/bandwidth/voice_lib/voice/models/api_create_call_request.rb +77 -17
- data/lib/bandwidth/voice_lib/voice/models/{call_engine_modify_conference_request.rb → api_modify_conference_request.rb} +14 -14
- data/lib/bandwidth/voice_lib/voice/models/state_enum.rb +3 -3
- data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/api_controller.rb +24 -24
- data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/base_controller.rb +1 -1
- data/test/controllers/controller_test_base.rb +21 -0
- data/test/http_response_catcher.rb +19 -0
- data/test/test_helper.rb +94 -0
- metadata +50 -7
@@ -0,0 +1,60 @@
|
|
1
|
+
# bandwidth
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module Bandwidth
|
7
|
+
# BandwidthMessagesList Model.
|
8
|
+
class BandwidthMessagesList < BaseModel
|
9
|
+
# Total number of messages matched by the search
|
10
|
+
# @return [Integer]
|
11
|
+
attr_accessor :total_count
|
12
|
+
|
13
|
+
# Total number of messages matched by the search
|
14
|
+
# @return [PageInfo]
|
15
|
+
attr_accessor :page_info
|
16
|
+
|
17
|
+
# Total number of messages matched by the search
|
18
|
+
# @return [List of BandwidthMessageItem]
|
19
|
+
attr_accessor :messages
|
20
|
+
|
21
|
+
# A mapping from model property names to API property names.
|
22
|
+
def self.names
|
23
|
+
@_hash = {} if @_hash.nil?
|
24
|
+
@_hash['total_count'] = 'totalCount'
|
25
|
+
@_hash['page_info'] = 'pageInfo'
|
26
|
+
@_hash['messages'] = 'messages'
|
27
|
+
@_hash
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize(total_count = nil,
|
31
|
+
page_info = nil,
|
32
|
+
messages = nil)
|
33
|
+
@total_count = total_count
|
34
|
+
@page_info = page_info
|
35
|
+
@messages = messages
|
36
|
+
end
|
37
|
+
|
38
|
+
# Creates an instance of the object from a hash.
|
39
|
+
def self.from_hash(hash)
|
40
|
+
return nil unless hash
|
41
|
+
|
42
|
+
# Extract variables from the hash.
|
43
|
+
total_count = hash['totalCount']
|
44
|
+
page_info = PageInfo.from_hash(hash['pageInfo']) if hash['pageInfo']
|
45
|
+
# Parameter is an array, so we need to iterate through it
|
46
|
+
messages = nil
|
47
|
+
unless hash['messages'].nil?
|
48
|
+
messages = []
|
49
|
+
hash['messages'].each do |structure|
|
50
|
+
messages << (BandwidthMessageItem.from_hash(structure) if structure)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Create object from extracted values.
|
55
|
+
BandwidthMessagesList.new(total_count,
|
56
|
+
page_info,
|
57
|
+
messages)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -30,19 +30,19 @@ module Bandwidth
|
|
30
30
|
# @return [List of Tag]
|
31
31
|
attr_accessor :tags
|
32
32
|
|
33
|
-
#
|
33
|
+
# User's account ID
|
34
34
|
# @return [String]
|
35
35
|
attr_accessor :user_id
|
36
36
|
|
37
|
-
#
|
37
|
+
# User's account ID
|
38
38
|
# @return [String]
|
39
39
|
attr_accessor :media_name
|
40
40
|
|
41
|
-
#
|
41
|
+
# User's account ID
|
42
42
|
# @return [String]
|
43
43
|
attr_accessor :media_id
|
44
44
|
|
45
|
-
#
|
45
|
+
# User's account ID
|
46
46
|
# @return [String]
|
47
47
|
attr_accessor :cache_control
|
48
48
|
|
@@ -6,30 +6,38 @@
|
|
6
6
|
module Bandwidth
|
7
7
|
# MessageRequest Model.
|
8
8
|
class MessageRequest < BaseModel
|
9
|
-
#
|
9
|
+
# The ID of the Application your from number is associated with in the
|
10
|
+
# Bandwidth Phone Number Dashboard.
|
10
11
|
# @return [String]
|
11
12
|
attr_accessor :application_id
|
12
13
|
|
13
|
-
#
|
14
|
+
# The phone number(s) the message should be sent to in E164 format
|
14
15
|
# @return [List of String]
|
15
16
|
attr_accessor :to
|
16
17
|
|
17
|
-
#
|
18
|
+
# One of your telephone numbers the message should come from in E164 format
|
18
19
|
# @return [String]
|
19
20
|
attr_accessor :from
|
20
21
|
|
21
|
-
#
|
22
|
+
# The contents of the text message. Must be 2048 characters or less.
|
22
23
|
# @return [String]
|
23
24
|
attr_accessor :text
|
24
25
|
|
25
|
-
#
|
26
|
+
# A list of URLs to include as media attachments as part of the message.
|
26
27
|
# @return [List of String]
|
27
28
|
attr_accessor :media
|
28
29
|
|
29
|
-
#
|
30
|
+
# A custom string that will be included in callback events of the message.
|
31
|
+
# Max 1024 characters
|
30
32
|
# @return [String]
|
31
33
|
attr_accessor :tag
|
32
34
|
|
35
|
+
# The message's priority, currently for toll-free or short code SMS only.
|
36
|
+
# Messages with a priority value of `"high"` are given preference over your
|
37
|
+
# other traffic.
|
38
|
+
# @return [PriorityEnum]
|
39
|
+
attr_accessor :priority
|
40
|
+
|
33
41
|
# A mapping from model property names to API property names.
|
34
42
|
def self.names
|
35
43
|
@_hash = {} if @_hash.nil?
|
@@ -39,6 +47,7 @@ module Bandwidth
|
|
39
47
|
@_hash['text'] = 'text'
|
40
48
|
@_hash['media'] = 'media'
|
41
49
|
@_hash['tag'] = 'tag'
|
50
|
+
@_hash['priority'] = 'priority'
|
42
51
|
@_hash
|
43
52
|
end
|
44
53
|
|
@@ -47,13 +56,15 @@ module Bandwidth
|
|
47
56
|
from = nil,
|
48
57
|
text = nil,
|
49
58
|
media = nil,
|
50
|
-
tag = nil
|
59
|
+
tag = nil,
|
60
|
+
priority = nil)
|
51
61
|
@application_id = application_id
|
52
62
|
@to = to
|
53
63
|
@from = from
|
54
64
|
@text = text
|
55
65
|
@media = media
|
56
66
|
@tag = tag
|
67
|
+
@priority = priority
|
57
68
|
end
|
58
69
|
|
59
70
|
# Creates an instance of the object from a hash.
|
@@ -67,6 +78,7 @@ module Bandwidth
|
|
67
78
|
text = hash['text']
|
68
79
|
media = hash['media']
|
69
80
|
tag = hash['tag']
|
81
|
+
priority = hash['priority']
|
70
82
|
|
71
83
|
# Create object from extracted values.
|
72
84
|
MessageRequest.new(application_id,
|
@@ -74,7 +86,8 @@ module Bandwidth
|
|
74
86
|
from,
|
75
87
|
text,
|
76
88
|
media,
|
77
|
-
tag
|
89
|
+
tag,
|
90
|
+
priority)
|
78
91
|
end
|
79
92
|
end
|
80
93
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# bandwidth
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module Bandwidth
|
7
|
+
# PageInfo Model.
|
8
|
+
class PageInfo < BaseModel
|
9
|
+
# The link to the previous page for pagination
|
10
|
+
# @return [String]
|
11
|
+
attr_accessor :prev_page
|
12
|
+
|
13
|
+
# The link to the next page for pagination
|
14
|
+
# @return [String]
|
15
|
+
attr_accessor :next_page
|
16
|
+
|
17
|
+
# The isolated pagination token for the previous page
|
18
|
+
# @return [String]
|
19
|
+
attr_accessor :prev_page_token
|
20
|
+
|
21
|
+
# The isolated pagination token for the next page
|
22
|
+
# @return [String]
|
23
|
+
attr_accessor :next_page_token
|
24
|
+
|
25
|
+
# A mapping from model property names to API property names.
|
26
|
+
def self.names
|
27
|
+
@_hash = {} if @_hash.nil?
|
28
|
+
@_hash['prev_page'] = 'prevPage'
|
29
|
+
@_hash['next_page'] = 'nextPage'
|
30
|
+
@_hash['prev_page_token'] = 'prevPageToken'
|
31
|
+
@_hash['next_page_token'] = 'nextPageToken'
|
32
|
+
@_hash
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize(prev_page = nil,
|
36
|
+
next_page = nil,
|
37
|
+
prev_page_token = nil,
|
38
|
+
next_page_token = nil)
|
39
|
+
@prev_page = prev_page
|
40
|
+
@next_page = next_page
|
41
|
+
@prev_page_token = prev_page_token
|
42
|
+
@next_page_token = next_page_token
|
43
|
+
end
|
44
|
+
|
45
|
+
# Creates an instance of the object from a hash.
|
46
|
+
def self.from_hash(hash)
|
47
|
+
return nil unless hash
|
48
|
+
|
49
|
+
# Extract variables from the hash.
|
50
|
+
prev_page = hash['prevPage']
|
51
|
+
next_page = hash['nextPage']
|
52
|
+
prev_page_token = hash['prevPageToken']
|
53
|
+
next_page_token = hash['nextPageToken']
|
54
|
+
|
55
|
+
# Create object from extracted values.
|
56
|
+
PageInfo.new(prev_page,
|
57
|
+
next_page,
|
58
|
+
prev_page_token,
|
59
|
+
next_page_token)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# bandwidth
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module Bandwidth
|
7
|
+
# The message's priority, currently for toll-free or short code SMS only.
|
8
|
+
# Messages with a priority value of `"high"` are given preference over your
|
9
|
+
# other traffic.
|
10
|
+
class PriorityEnum
|
11
|
+
PRIORITY_ENUM = [
|
12
|
+
# TODO: Write general description for DEFAULT
|
13
|
+
DEFAULT = 'default'.freeze,
|
14
|
+
|
15
|
+
# TODO: Write general description for HIGH
|
16
|
+
HIGH = 'high'.freeze
|
17
|
+
].freeze
|
18
|
+
end
|
19
|
+
end
|
@@ -14,7 +14,9 @@ require_relative 'two_factor_auth/models/two_factor_verify_request_schema.rb'
|
|
14
14
|
require_relative 'two_factor_auth/models/two_factor_verify_code_response.rb'
|
15
15
|
|
16
16
|
# Exceptions
|
17
|
-
require_relative 'two_factor_auth/exceptions/
|
17
|
+
require_relative 'two_factor_auth/exceptions/error_with_request_exception.rb'
|
18
|
+
require_relative 'two_factor_auth/exceptions/unauthorized_request_exception.rb'
|
19
|
+
require_relative 'two_factor_auth/exceptions/forbidden_request_exception.rb'
|
18
20
|
# Controllers
|
19
21
|
require_relative 'two_factor_auth/controllers/base_controller.rb'
|
20
|
-
require_relative 'two_factor_auth/controllers/
|
22
|
+
require_relative 'two_factor_auth/controllers/mfa_controller.rb'
|
@@ -9,10 +9,10 @@ module Bandwidth
|
|
9
9
|
class Client
|
10
10
|
attr_reader :config
|
11
11
|
|
12
|
-
# Access to
|
13
|
-
# @return [
|
14
|
-
def
|
15
|
-
@
|
12
|
+
# Access to mfa controller.
|
13
|
+
# @return [MFAController] Returns the controller instance.
|
14
|
+
def mfa
|
15
|
+
@mfa ||= MFAController.new config
|
16
16
|
end
|
17
17
|
|
18
18
|
def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
|
@@ -5,13 +5,13 @@
|
|
5
5
|
|
6
6
|
module Bandwidth
|
7
7
|
module TwoFactorAuth
|
8
|
-
#
|
9
|
-
class
|
8
|
+
# MFAController
|
9
|
+
class MFAController < BaseController
|
10
10
|
def initialize(config, http_call_back: nil)
|
11
11
|
super(config, http_call_back: http_call_back)
|
12
12
|
end
|
13
13
|
|
14
|
-
#
|
14
|
+
# Allows a user to send a MFA code through a phone call
|
15
15
|
# @param [String] account_id Required parameter: Bandwidth Account ID with
|
16
16
|
# Voice service enabled
|
17
17
|
# @param [TwoFactorCodeRequestSchema] body Required parameter: Example:
|
@@ -23,7 +23,7 @@ module TwoFactorAuth
|
|
23
23
|
_query_builder << '/accounts/{accountId}/code/voice'
|
24
24
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
25
25
|
_query_builder,
|
26
|
-
'accountId' => { 'value' => account_id, 'encode' =>
|
26
|
+
'accountId' => { 'value' => account_id, 'encode' => false }
|
27
27
|
)
|
28
28
|
_query_url = APIHelper.clean_url _query_builder
|
29
29
|
|
@@ -44,8 +44,23 @@ module TwoFactorAuth
|
|
44
44
|
|
45
45
|
# Validate response against endpoint and global error codes.
|
46
46
|
if _response.status_code == 400
|
47
|
-
raise
|
48
|
-
'
|
47
|
+
raise ErrorWithRequestException.new(
|
48
|
+
'If there is any issue with values passed in by the user',
|
49
|
+
_response
|
50
|
+
)
|
51
|
+
elsif _response.status_code == 401
|
52
|
+
raise UnauthorizedRequestException.new(
|
53
|
+
'Authentication is either incorrect or not present',
|
54
|
+
_response
|
55
|
+
)
|
56
|
+
elsif _response.status_code == 403
|
57
|
+
raise ForbiddenRequestException.new(
|
58
|
+
'The user is not authorized to access this resource',
|
59
|
+
_response
|
60
|
+
)
|
61
|
+
elsif _response.status_code == 500
|
62
|
+
raise ErrorWithRequestException.new(
|
63
|
+
'An internal server error occurred',
|
49
64
|
_response
|
50
65
|
)
|
51
66
|
end
|
@@ -58,7 +73,7 @@ module TwoFactorAuth
|
|
58
73
|
)
|
59
74
|
end
|
60
75
|
|
61
|
-
#
|
76
|
+
# Allows a user to send a MFA code through a text message (SMS)
|
62
77
|
# @param [String] account_id Required parameter: Bandwidth Account ID with
|
63
78
|
# Messaging service enabled
|
64
79
|
# @param [TwoFactorCodeRequestSchema] body Required parameter: Example:
|
@@ -70,7 +85,7 @@ module TwoFactorAuth
|
|
70
85
|
_query_builder << '/accounts/{accountId}/code/messaging'
|
71
86
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
72
87
|
_query_builder,
|
73
|
-
'accountId' => { 'value' => account_id, 'encode' =>
|
88
|
+
'accountId' => { 'value' => account_id, 'encode' => false }
|
74
89
|
)
|
75
90
|
_query_url = APIHelper.clean_url _query_builder
|
76
91
|
|
@@ -91,8 +106,23 @@ module TwoFactorAuth
|
|
91
106
|
|
92
107
|
# Validate response against endpoint and global error codes.
|
93
108
|
if _response.status_code == 400
|
94
|
-
raise
|
95
|
-
'
|
109
|
+
raise ErrorWithRequestException.new(
|
110
|
+
'If there is any issue with values passed in by the user',
|
111
|
+
_response
|
112
|
+
)
|
113
|
+
elsif _response.status_code == 401
|
114
|
+
raise UnauthorizedRequestException.new(
|
115
|
+
'Authentication is either incorrect or not present',
|
116
|
+
_response
|
117
|
+
)
|
118
|
+
elsif _response.status_code == 403
|
119
|
+
raise ForbiddenRequestException.new(
|
120
|
+
'The user is not authorized to access this resource',
|
121
|
+
_response
|
122
|
+
)
|
123
|
+
elsif _response.status_code == 500
|
124
|
+
raise ErrorWithRequestException.new(
|
125
|
+
'An internal server error occurred',
|
96
126
|
_response
|
97
127
|
)
|
98
128
|
end
|
@@ -106,7 +136,7 @@ module TwoFactorAuth
|
|
106
136
|
)
|
107
137
|
end
|
108
138
|
|
109
|
-
#
|
139
|
+
# Allows a user to verify an MFA code
|
110
140
|
# @param [String] account_id Required parameter: Bandwidth Account ID with
|
111
141
|
# Two-Factor enabled
|
112
142
|
# @param [TwoFactorVerifyRequestSchema] body Required parameter: Example:
|
@@ -118,7 +148,7 @@ module TwoFactorAuth
|
|
118
148
|
_query_builder << '/accounts/{accountId}/code/verify'
|
119
149
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
120
150
|
_query_builder,
|
121
|
-
'accountId' => { 'value' => account_id, 'encode' =>
|
151
|
+
'accountId' => { 'value' => account_id, 'encode' => false }
|
122
152
|
)
|
123
153
|
_query_url = APIHelper.clean_url _query_builder
|
124
154
|
|
@@ -139,8 +169,29 @@ module TwoFactorAuth
|
|
139
169
|
|
140
170
|
# Validate response against endpoint and global error codes.
|
141
171
|
if _response.status_code == 400
|
142
|
-
raise
|
143
|
-
'
|
172
|
+
raise ErrorWithRequestException.new(
|
173
|
+
'If there is any issue with values passed in by the user',
|
174
|
+
_response
|
175
|
+
)
|
176
|
+
elsif _response.status_code == 401
|
177
|
+
raise UnauthorizedRequestException.new(
|
178
|
+
'Authentication is either incorrect or not present',
|
179
|
+
_response
|
180
|
+
)
|
181
|
+
elsif _response.status_code == 403
|
182
|
+
raise ForbiddenRequestException.new(
|
183
|
+
'The user is not authorized to access this resource',
|
184
|
+
_response
|
185
|
+
)
|
186
|
+
elsif _response.status_code == 429
|
187
|
+
raise ErrorWithRequestException.new(
|
188
|
+
'The user has made too many bad requests and is temporarily locked' \
|
189
|
+
' out',
|
190
|
+
_response
|
191
|
+
)
|
192
|
+
elsif _response.status_code == 500
|
193
|
+
raise ErrorWithRequestException.new(
|
194
|
+
'An internal server error occurred',
|
144
195
|
_response
|
145
196
|
)
|
146
197
|
end
|
data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/error_with_request_exception.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# bandwidth
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module Bandwidth
|
7
|
+
# ErrorWithRequest class.
|
8
|
+
class ErrorWithRequestException < APIException
|
9
|
+
# An error message pertaining to what the issue could be
|
10
|
+
# @return [String]
|
11
|
+
attr_accessor :error
|
12
|
+
|
13
|
+
# The associated requestId from AWS
|
14
|
+
# @return [String]
|
15
|
+
attr_accessor :request_id
|
16
|
+
|
17
|
+
# The constructor.
|
18
|
+
# @param [String] The reason for raising an exception.
|
19
|
+
# @param [HttpResponse] The HttpReponse of the API call.
|
20
|
+
def initialize(reason, response)
|
21
|
+
super(reason, response)
|
22
|
+
hash = APIHelper.json_deserialize(@response.raw_body)
|
23
|
+
unbox(hash)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Populates this object by extracting properties from a hash.
|
27
|
+
# @param [Hash] The deserialized response sent by the server in the
|
28
|
+
# response body.
|
29
|
+
def unbox(hash)
|
30
|
+
@error = hash['error']
|
31
|
+
@request_id = hash['requestId']
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|