bandwidth-sdk 0.1.0 → 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +27 -27
  3. data/README.md +115 -1
  4. data/lib/bandwidth.rb +39 -37
  5. data/lib/bandwidth/api_helper.rb +280 -280
  6. data/lib/bandwidth/client.rb +41 -32
  7. data/lib/bandwidth/configuration.rb +130 -111
  8. data/lib/bandwidth/exceptions/api_exception.rb +20 -20
  9. data/lib/bandwidth/http/api_response.rb +36 -36
  10. data/lib/bandwidth/http/auth/messaging_basic_auth.rb +22 -0
  11. data/lib/bandwidth/http/auth/voice_basic_auth.rb +22 -22
  12. data/lib/bandwidth/http/faraday_client.rb +64 -64
  13. data/lib/bandwidth/http/http_call_back.rb +24 -24
  14. data/lib/bandwidth/http/http_client.rb +104 -104
  15. data/lib/bandwidth/http/http_method_enum.rb +13 -13
  16. data/lib/bandwidth/http/http_request.rb +50 -50
  17. data/lib/bandwidth/http/http_response.rb +29 -29
  18. data/lib/bandwidth/messaging_lib/messaging.rb +23 -0
  19. data/lib/bandwidth/messaging_lib/messaging/client.rb +40 -0
  20. data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +406 -0
  21. data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +49 -0
  22. data/lib/bandwidth/messaging_lib/messaging/exceptions/generic_client_exception.rb +46 -0
  23. data/lib/bandwidth/messaging_lib/messaging/exceptions/path_client_exception.rb +49 -0
  24. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_callback_message.rb +80 -0
  25. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message.rb +125 -0
  26. data/lib/bandwidth/messaging_lib/messaging/models/deferred_result.rb +44 -0
  27. data/lib/bandwidth/messaging_lib/messaging/models/field_error.rb +44 -0
  28. data/lib/bandwidth/messaging_lib/messaging/models/media.rb +123 -0
  29. data/lib/bandwidth/messaging_lib/messaging/models/message_request.rb +80 -0
  30. data/lib/bandwidth/messaging_lib/messaging/models/tag.rb +44 -0
  31. data/lib/bandwidth/models/base_model.rb +36 -36
  32. data/lib/bandwidth/voice_lib/bxml/bxml.rb +40 -0
  33. data/lib/bandwidth/voice_lib/bxml/verbs/forward.rb +19 -0
  34. data/lib/bandwidth/voice_lib/bxml/verbs/gather.rb +38 -0
  35. data/lib/bandwidth/voice_lib/bxml/verbs/hangup.rb +15 -0
  36. data/lib/bandwidth/voice_lib/bxml/verbs/pause.rb +16 -0
  37. data/lib/bandwidth/voice_lib/bxml/verbs/phone_number.rb +19 -0
  38. data/lib/bandwidth/voice_lib/bxml/verbs/play_audio.rb +18 -0
  39. data/lib/bandwidth/voice_lib/bxml/verbs/redirect.rb +21 -0
  40. data/lib/bandwidth/voice_lib/bxml/verbs/send_dtmf.rb +14 -0
  41. data/lib/bandwidth/voice_lib/bxml/verbs/speak_sentence.rb +19 -0
  42. data/lib/bandwidth/voice_lib/bxml/verbs/transfer.rb +38 -0
  43. data/lib/bandwidth/voice_lib/bxml/verbs/xml_verb.rb +27 -0
  44. data/lib/bandwidth/voice_lib/voice.rb +27 -23
  45. data/lib/bandwidth/voice_lib/voice/client.rb +40 -36
  46. data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +184 -0
  47. data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +49 -49
  48. data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_exception.rb +51 -0
  49. data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_not_found_exception.rb +49 -0
  50. data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_rate_limit_error_exception.rb +56 -0
  51. data/lib/bandwidth/voice_lib/voice/models/answer_method_enum.rb +35 -35
  52. data/lib/bandwidth/voice_lib/voice/models/api_call_response.rb +116 -116
  53. data/lib/bandwidth/voice_lib/voice/models/api_create_call_request.rb +125 -125
  54. data/lib/bandwidth/voice_lib/voice/models/api_modify_call_request.rb +80 -80
  55. data/lib/bandwidth/voice_lib/voice/models/bandwidth_callback_message_voice.rb +98 -98
  56. data/lib/bandwidth/voice_lib/voice/models/disconnect_method_enum.rb +35 -35
  57. data/lib/bandwidth/voice_lib/voice/models/field_error.rb +44 -0
  58. data/lib/bandwidth/voice_lib/voice/models/redirect_method_enum.rb +35 -35
  59. data/lib/bandwidth/voice_lib/voice/models/state_enum.rb +17 -17
  60. metadata +36 -47
  61. data/lib/bandwidth/voice_lib/voice/bxml/bxml.rb +0 -36
  62. data/lib/bandwidth/voice_lib/voice/bxml/verbs/forward.rb +0 -19
  63. data/lib/bandwidth/voice_lib/voice/bxml/verbs/gather.rb +0 -37
  64. data/lib/bandwidth/voice_lib/voice/bxml/verbs/hangup.rb +0 -14
  65. data/lib/bandwidth/voice_lib/voice/bxml/verbs/pause.rb +0 -15
  66. data/lib/bandwidth/voice_lib/voice/bxml/verbs/phone_number.rb +0 -18
  67. data/lib/bandwidth/voice_lib/voice/bxml/verbs/play_audio.rb +0 -17
  68. data/lib/bandwidth/voice_lib/voice/bxml/verbs/redirect.rb +0 -20
  69. data/lib/bandwidth/voice_lib/voice/bxml/verbs/send_dtmf.rb +0 -12
  70. data/lib/bandwidth/voice_lib/voice/bxml/verbs/speak_sentence.rb +0 -18
  71. data/lib/bandwidth/voice_lib/voice/bxml/verbs/transfer.rb +0 -37
  72. data/lib/bandwidth/voice_lib/voice/bxml/verbs/xml_verb.rb +0 -26
  73. data/lib/bandwidth/voice_lib/voice/controllers/calls_controller.rb +0 -88
@@ -1,50 +1,50 @@
1
- # bandwidth
2
- #
3
- # This file was automatically generated by APIMATIC v2.0
4
- # ( https://apimatic.io ).
5
-
6
- module Bandwidth
7
- # Represents a single Http Request.
8
- class HttpRequest
9
- attr_accessor :http_method, :query_url, :headers,
10
- :parameters, :username, :password
11
-
12
- # The constructor.
13
- # @param [HttpMethodEnum] The HTTP method.
14
- # @param [String] The URL to send the request to.
15
- # @param [Hash, Optional] The headers for the HTTP Request.
16
- # @param [Hash, Optional] The parameters for the HTTP Request.
17
- def initialize(http_method,
18
- query_url,
19
- headers: {},
20
- parameters: {})
21
- @http_method = http_method
22
- @query_url = query_url
23
- @headers = headers
24
- @parameters = parameters
25
- end
26
-
27
- # Add a header to the HttpRequest.
28
- # @param [String] The name of the header.
29
- # @param [String] The value of the header.
30
- def add_header(name, value)
31
- @headers[name] = value
32
- end
33
-
34
- # Add a parameter to the HttpRequest.
35
- # @param [String] The name of the parameter.
36
- # @param [String] The value of the parameter.
37
- def add_parameter(name, value)
38
- @parameters[name] = value
39
- end
40
-
41
- # Add a query parameter to the HttpRequest.
42
- # @param [String] The name of the query parameter.
43
- # @param [String] The value of the query parameter.
44
- def add_query_parameter(name, value)
45
- @query_url = APIHelper.append_url_with_query_parameters(@query_url,
46
- name => value)
47
- @query_url = APIHelper.clean_url(@query_url)
48
- end
49
- end
50
- end
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ # Represents a single Http Request.
8
+ class HttpRequest
9
+ attr_accessor :http_method, :query_url, :headers,
10
+ :parameters, :username, :password
11
+
12
+ # The constructor.
13
+ # @param [HttpMethodEnum] The HTTP method.
14
+ # @param [String] The URL to send the request to.
15
+ # @param [Hash, Optional] The headers for the HTTP Request.
16
+ # @param [Hash, Optional] The parameters for the HTTP Request.
17
+ def initialize(http_method,
18
+ query_url,
19
+ headers: {},
20
+ parameters: {})
21
+ @http_method = http_method
22
+ @query_url = query_url
23
+ @headers = headers
24
+ @parameters = parameters
25
+ end
26
+
27
+ # Add a header to the HttpRequest.
28
+ # @param [String] The name of the header.
29
+ # @param [String] The value of the header.
30
+ def add_header(name, value)
31
+ @headers[name] = value
32
+ end
33
+
34
+ # Add a parameter to the HttpRequest.
35
+ # @param [String] The name of the parameter.
36
+ # @param [String] The value of the parameter.
37
+ def add_parameter(name, value)
38
+ @parameters[name] = value
39
+ end
40
+
41
+ # Add a query parameter to the HttpRequest.
42
+ # @param [String] The name of the query parameter.
43
+ # @param [String] The value of the query parameter.
44
+ def add_query_parameter(name, value)
45
+ @query_url = APIHelper.append_url_with_query_parameters(@query_url,
46
+ name => value)
47
+ @query_url = APIHelper.clean_url(@query_url)
48
+ end
49
+ end
50
+ end
@@ -1,29 +1,29 @@
1
- # bandwidth
2
- #
3
- # This file was automatically generated by APIMATIC v2.0
4
- # ( https://apimatic.io ).
5
-
6
- module Bandwidth
7
- # Http response received.
8
- class HttpResponse
9
- attr_reader :status_code, :reason_phrase, :headers, :raw_body, :request
10
-
11
- # The constructor
12
- # @param [Integer] The status code returned by the server.
13
- # @param [String] The reason phrase returned by the server.
14
- # @param [Hash] The headers sent by the server in the response.
15
- # @param [String] The raw body of the response.
16
- # @param [HttpRequest] The request that resulted in this response.
17
- def initialize(status_code,
18
- reason_phrase,
19
- headers,
20
- raw_body,
21
- request)
22
- @status_code = status_code
23
- @reason_phrase = reason_phrase
24
- @headers = headers
25
- @raw_body = raw_body
26
- @request = request
27
- end
28
- end
29
- end
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ # Http response received.
8
+ class HttpResponse
9
+ attr_reader :status_code, :reason_phrase, :headers, :raw_body, :request
10
+
11
+ # The constructor
12
+ # @param [Integer] The status code returned by the server.
13
+ # @param [String] The reason phrase returned by the server.
14
+ # @param [Hash] The headers sent by the server in the response.
15
+ # @param [String] The raw body of the response.
16
+ # @param [HttpRequest] The request that resulted in this response.
17
+ def initialize(status_code,
18
+ reason_phrase,
19
+ headers,
20
+ raw_body,
21
+ request)
22
+ @status_code = status_code
23
+ @reason_phrase = reason_phrase
24
+ @headers = headers
25
+ @raw_body = raw_body
26
+ @request = request
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+
7
+ require_relative 'messaging/client.rb'
8
+
9
+ # Models
10
+ require_relative 'messaging/models/field_error.rb'
11
+ require_relative 'messaging/models/media.rb'
12
+ require_relative 'messaging/models/tag.rb'
13
+ require_relative 'messaging/models/deferred_result.rb'
14
+ require_relative 'messaging/models/bandwidth_callback_message.rb'
15
+ require_relative 'messaging/models/bandwidth_message.rb'
16
+ require_relative 'messaging/models/message_request.rb'
17
+
18
+ # Exceptions
19
+ require_relative 'messaging/exceptions/generic_client_exception.rb'
20
+ require_relative 'messaging/exceptions/path_client_exception.rb'
21
+ # Controllers
22
+ require_relative 'messaging/controllers/base_controller.rb'
23
+ require_relative 'messaging/controllers/api_controller.rb'
@@ -0,0 +1,40 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ module Messaging
8
+ # bandwidth client class.
9
+ class Client
10
+ attr_reader :config
11
+
12
+ # Access to client controller.
13
+ # @return [APIController] Returns the controller instance.
14
+ def client
15
+ @client ||= APIController.new config
16
+ end
17
+
18
+ def initialize(timeout: 0, max_retries: 0, retry_interval: 1,
19
+ backoff_factor: 1, environment: Environment::PRODUCTION,
20
+ messaging_basic_auth_user_name: 'TODO: Replace',
21
+ messaging_basic_auth_password: 'TODO: Replace',
22
+ voice_basic_auth_user_name: 'TODO: Replace',
23
+ voice_basic_auth_password: 'TODO: Replace', config: nil)
24
+ @config = if config.nil?
25
+ Configuration.new(timeout: timeout,
26
+ max_retries: max_retries,
27
+ retry_interval: retry_interval,
28
+ backoff_factor: backoff_factor,
29
+ environment: environment,
30
+ messaging_basic_auth_user_name: messaging_basic_auth_user_name,
31
+ messaging_basic_auth_password: messaging_basic_auth_password,
32
+ voice_basic_auth_user_name: voice_basic_auth_user_name,
33
+ voice_basic_auth_password: voice_basic_auth_password)
34
+ else
35
+ config
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,406 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ module Messaging
8
+ # APIController
9
+ class APIController < BaseController
10
+ def initialize(config, http_call_back: nil)
11
+ super(config, http_call_back: http_call_back)
12
+ end
13
+
14
+ # getMessage
15
+ # @return [void] response from the API call
16
+ def get_message
17
+ # Prepare query url.
18
+ _query_builder = config.get_base_uri(Server::MESSAGINGDEFAULT)
19
+ _query_builder << '/ping'
20
+ _query_url = APIHelper.clean_url _query_builder
21
+
22
+ # Prepare and execute HttpRequest.
23
+ _request = config.http_client.get(
24
+ _query_url
25
+ )
26
+ MessagingBasicAuth.apply(config, _request)
27
+ _response = execute_request(_request)
28
+
29
+ # Validate response against endpoint and global error codes.
30
+ if _response.status_code == 400
31
+ raise GenericClientException.new(
32
+ '400 Request is malformed or invalid',
33
+ _response
34
+ )
35
+ elsif _response.status_code == 401
36
+ raise PathClientException.new(
37
+ '401 The specified user does not have access to the account',
38
+ _response
39
+ )
40
+ elsif _response.status_code == 403
41
+ raise PathClientException.new(
42
+ '403 The user does not have access to this API',
43
+ _response
44
+ )
45
+ elsif _response.status_code == 404
46
+ raise PathClientException.new(
47
+ '404 Path not found',
48
+ _response
49
+ )
50
+ elsif _response.status_code == 415
51
+ raise GenericClientException.new(
52
+ '415 The content-type of the request is incorrect',
53
+ _response
54
+ )
55
+ elsif _response.status_code == 429
56
+ raise GenericClientException.new(
57
+ '429 The rate limit has been reached',
58
+ _response
59
+ )
60
+ end
61
+ validate_response(_response)
62
+
63
+ # Return appropriate response type.
64
+ ApiResponse.new(_response)
65
+ end
66
+
67
+ # listMedia
68
+ # @param [String] user_id Required parameter: Example:
69
+ # @param [String] continuation_token Optional parameter: Example:
70
+ # @return [List of Media] response from the API call
71
+ def list_media(user_id,
72
+ continuation_token: nil)
73
+ # Prepare query url.
74
+ _query_builder = config.get_base_uri(Server::MESSAGINGDEFAULT)
75
+ _query_builder << '/users/{userId}/media'
76
+ _query_builder = APIHelper.append_url_with_template_parameters(
77
+ _query_builder,
78
+ 'userId' => user_id
79
+ )
80
+ _query_url = APIHelper.clean_url _query_builder
81
+
82
+ # Prepare headers.
83
+ _headers = {
84
+ 'accept' => 'application/json',
85
+ 'Continuation-Token' => continuation_token
86
+ }
87
+
88
+ # Prepare and execute HttpRequest.
89
+ _request = config.http_client.get(
90
+ _query_url,
91
+ headers: _headers
92
+ )
93
+ MessagingBasicAuth.apply(config, _request)
94
+ _response = execute_request(_request)
95
+
96
+ # Validate response against endpoint and global error codes.
97
+ if _response.status_code == 400
98
+ raise GenericClientException.new(
99
+ '400 Request is malformed or invalid',
100
+ _response
101
+ )
102
+ elsif _response.status_code == 401
103
+ raise PathClientException.new(
104
+ '401 The specified user does not have access to the account',
105
+ _response
106
+ )
107
+ elsif _response.status_code == 403
108
+ raise PathClientException.new(
109
+ '403 The user does not have access to this API',
110
+ _response
111
+ )
112
+ elsif _response.status_code == 404
113
+ raise PathClientException.new(
114
+ '404 Path not found',
115
+ _response
116
+ )
117
+ elsif _response.status_code == 415
118
+ raise GenericClientException.new(
119
+ '415 The content-type of the request is incorrect',
120
+ _response
121
+ )
122
+ elsif _response.status_code == 429
123
+ raise GenericClientException.new(
124
+ '429 The rate limit has been reached',
125
+ _response
126
+ )
127
+ end
128
+ validate_response(_response)
129
+
130
+ # Return appropriate response type.
131
+ decoded = APIHelper.json_deserialize(_response.raw_body)
132
+ ApiResponse.new(_response,
133
+ data: decoded.map { |element| Media.from_hash(element) })
134
+ end
135
+
136
+ # getMedia
137
+ # @param [String] user_id Required parameter: Example:
138
+ # @param [String] media_id Required parameter: Example:
139
+ # @return [Binary] response from the API call
140
+ def get_media(user_id,
141
+ media_id)
142
+ # Prepare query url.
143
+ _query_builder = config.get_base_uri(Server::MESSAGINGDEFAULT)
144
+ _query_builder << '/users/{userId}/media/{mediaId}'
145
+ _query_builder = APIHelper.append_url_with_template_parameters(
146
+ _query_builder,
147
+ 'userId' => user_id,
148
+ 'mediaId' => media_id
149
+ )
150
+ _query_url = APIHelper.clean_url _query_builder
151
+
152
+ # Prepare and execute HttpRequest.
153
+ _request = config.http_client.get(
154
+ _query_url
155
+ )
156
+ MessagingBasicAuth.apply(config, _request)
157
+ _response = execute_request(_request, binary: true)
158
+
159
+ # Validate response against endpoint and global error codes.
160
+ if _response.status_code == 400
161
+ raise GenericClientException.new(
162
+ '400 Request is malformed or invalid',
163
+ _response
164
+ )
165
+ elsif _response.status_code == 401
166
+ raise PathClientException.new(
167
+ '401 The specified user does not have access to the account',
168
+ _response
169
+ )
170
+ elsif _response.status_code == 403
171
+ raise PathClientException.new(
172
+ '403 The user does not have access to this API',
173
+ _response
174
+ )
175
+ elsif _response.status_code == 404
176
+ raise PathClientException.new(
177
+ '404 Path not found',
178
+ _response
179
+ )
180
+ elsif _response.status_code == 415
181
+ raise GenericClientException.new(
182
+ '415 The content-type of the request is incorrect',
183
+ _response
184
+ )
185
+ elsif _response.status_code == 429
186
+ raise GenericClientException.new(
187
+ '429 The rate limit has been reached',
188
+ _response
189
+ )
190
+ end
191
+ validate_response(_response)
192
+
193
+ # Return appropriate response type.
194
+ ApiResponse.new(_response, data: _response.raw_body)
195
+ end
196
+
197
+ # uploadMedia
198
+ # @param [String] user_id Required parameter: Example:
199
+ # @param [String] media_id Required parameter: Example:
200
+ # @param [Long] content_length Required parameter: Example:
201
+ # @param [String] body Required parameter: Example:
202
+ # @param [String] content_type Optional parameter: Example:
203
+ # @param [String] cache_control Optional parameter: Example:
204
+ # @return [void] response from the API call
205
+ def upload_media(user_id,
206
+ media_id,
207
+ content_length,
208
+ body,
209
+ content_type: nil,
210
+ cache_control: nil)
211
+ # Prepare query url.
212
+ _query_builder = config.get_base_uri(Server::MESSAGINGDEFAULT)
213
+ _query_builder << '/users/{userId}/media/{mediaId}'
214
+ _query_builder = APIHelper.append_url_with_template_parameters(
215
+ _query_builder,
216
+ 'userId' => user_id,
217
+ 'mediaId' => media_id
218
+ )
219
+ _query_url = APIHelper.clean_url _query_builder
220
+
221
+ # Prepare headers.
222
+ _headers = {
223
+ 'Content-Length' => content_length,
224
+ 'Content-Type' => content_type,
225
+ 'Cache-Control' => cache_control
226
+ }
227
+
228
+ # Prepare and execute HttpRequest.
229
+ _request = config.http_client.put(
230
+ _query_url,
231
+ headers: _headers,
232
+ parameters: body
233
+ )
234
+ MessagingBasicAuth.apply(config, _request)
235
+ _response = execute_request(_request)
236
+
237
+ # Validate response against endpoint and global error codes.
238
+ if _response.status_code == 400
239
+ raise GenericClientException.new(
240
+ '400 Request is malformed or invalid',
241
+ _response
242
+ )
243
+ elsif _response.status_code == 401
244
+ raise PathClientException.new(
245
+ '401 The specified user does not have access to the account',
246
+ _response
247
+ )
248
+ elsif _response.status_code == 403
249
+ raise PathClientException.new(
250
+ '403 The user does not have access to this API',
251
+ _response
252
+ )
253
+ elsif _response.status_code == 404
254
+ raise PathClientException.new(
255
+ '404 Path not found',
256
+ _response
257
+ )
258
+ elsif _response.status_code == 415
259
+ raise GenericClientException.new(
260
+ '415 The content-type of the request is incorrect',
261
+ _response
262
+ )
263
+ elsif _response.status_code == 429
264
+ raise GenericClientException.new(
265
+ '429 The rate limit has been reached',
266
+ _response
267
+ )
268
+ end
269
+ validate_response(_response)
270
+
271
+ # Return appropriate response type.
272
+ ApiResponse.new(_response)
273
+ end
274
+
275
+ # deleteMedia
276
+ # @param [String] user_id Required parameter: Example:
277
+ # @param [String] media_id Required parameter: Example:
278
+ # @return [void] response from the API call
279
+ def delete_media(user_id,
280
+ media_id)
281
+ # Prepare query url.
282
+ _query_builder = config.get_base_uri(Server::MESSAGINGDEFAULT)
283
+ _query_builder << '/users/{userId}/media/{mediaId}'
284
+ _query_builder = APIHelper.append_url_with_template_parameters(
285
+ _query_builder,
286
+ 'userId' => user_id,
287
+ 'mediaId' => media_id
288
+ )
289
+ _query_url = APIHelper.clean_url _query_builder
290
+
291
+ # Prepare and execute HttpRequest.
292
+ _request = config.http_client.delete(
293
+ _query_url
294
+ )
295
+ MessagingBasicAuth.apply(config, _request)
296
+ _response = execute_request(_request)
297
+
298
+ # Validate response against endpoint and global error codes.
299
+ if _response.status_code == 400
300
+ raise GenericClientException.new(
301
+ '400 Request is malformed or invalid',
302
+ _response
303
+ )
304
+ elsif _response.status_code == 401
305
+ raise PathClientException.new(
306
+ '401 The specified user does not have access to the account',
307
+ _response
308
+ )
309
+ elsif _response.status_code == 403
310
+ raise PathClientException.new(
311
+ '403 The user does not have access to this API',
312
+ _response
313
+ )
314
+ elsif _response.status_code == 404
315
+ raise PathClientException.new(
316
+ '404 Path not found',
317
+ _response
318
+ )
319
+ elsif _response.status_code == 415
320
+ raise GenericClientException.new(
321
+ '415 The content-type of the request is incorrect',
322
+ _response
323
+ )
324
+ elsif _response.status_code == 429
325
+ raise GenericClientException.new(
326
+ '429 The rate limit has been reached',
327
+ _response
328
+ )
329
+ end
330
+ validate_response(_response)
331
+
332
+ # Return appropriate response type.
333
+ ApiResponse.new(_response)
334
+ end
335
+
336
+ # createMessage
337
+ # @param [String] user_id Required parameter: Example:
338
+ # @param [MessageRequest] body Optional parameter: Example:
339
+ # @return [BandwidthMessage] response from the API call
340
+ def create_message(user_id,
341
+ body: nil)
342
+ # Prepare query url.
343
+ _query_builder = config.get_base_uri(Server::MESSAGINGDEFAULT)
344
+ _query_builder << '/users/{userId}/messages'
345
+ _query_builder = APIHelper.append_url_with_template_parameters(
346
+ _query_builder,
347
+ 'userId' => user_id
348
+ )
349
+ _query_url = APIHelper.clean_url _query_builder
350
+
351
+ # Prepare headers.
352
+ _headers = {
353
+ 'accept' => 'application/json',
354
+ 'content-type' => 'application/json; charset=utf-8'
355
+ }
356
+
357
+ # Prepare and execute HttpRequest.
358
+ _request = config.http_client.post(
359
+ _query_url,
360
+ headers: _headers,
361
+ parameters: body.to_json
362
+ )
363
+ MessagingBasicAuth.apply(config, _request)
364
+ _response = execute_request(_request)
365
+
366
+ # Validate response against endpoint and global error codes.
367
+ if _response.status_code == 400
368
+ raise GenericClientException.new(
369
+ '400 Request is malformed or invalid',
370
+ _response
371
+ )
372
+ elsif _response.status_code == 401
373
+ raise PathClientException.new(
374
+ '401 The specified user does not have access to the account',
375
+ _response
376
+ )
377
+ elsif _response.status_code == 403
378
+ raise PathClientException.new(
379
+ '403 The user does not have access to this API',
380
+ _response
381
+ )
382
+ elsif _response.status_code == 404
383
+ raise PathClientException.new(
384
+ '404 Path not found',
385
+ _response
386
+ )
387
+ elsif _response.status_code == 415
388
+ raise GenericClientException.new(
389
+ '415 The content-type of the request is incorrect',
390
+ _response
391
+ )
392
+ elsif _response.status_code == 429
393
+ raise GenericClientException.new(
394
+ '429 The rate limit has been reached',
395
+ _response
396
+ )
397
+ end
398
+ validate_response(_response)
399
+
400
+ # Return appropriate response type.
401
+ decoded = APIHelper.json_deserialize(_response.raw_body)
402
+ ApiResponse.new(_response, data: BandwidthMessage.from_hash(decoded))
403
+ end
404
+ end
405
+ end
406
+ end