bandwidth-sdk 3.5.0 → 3.10.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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/lib/bandwidth.rb +2 -0
  3. data/lib/bandwidth/api_helper.rb +14 -9
  4. data/lib/bandwidth/client.rb +13 -2
  5. data/lib/bandwidth/configuration.rb +46 -9
  6. data/lib/bandwidth/http/auth/web_rtc_basic_auth.rb +22 -0
  7. data/lib/bandwidth/messaging_lib/messaging/client.rb +9 -2
  8. data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +18 -12
  9. data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +1 -1
  10. data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/client.rb +9 -2
  11. data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/api_controller.rb +14 -9
  12. data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/base_controller.rb +1 -1
  13. data/lib/bandwidth/voice_lib/bxml/verbs/bridge.rb +28 -0
  14. data/lib/bandwidth/voice_lib/bxml/verbs/conference.rb +5 -1
  15. data/lib/bandwidth/voice_lib/bxml/verbs/gather.rb +5 -1
  16. data/lib/bandwidth/voice_lib/bxml/verbs/phone_number.rb +5 -1
  17. data/lib/bandwidth/voice_lib/bxml/verbs/record.rb +5 -1
  18. data/lib/bandwidth/voice_lib/bxml/verbs/redirect.rb +5 -1
  19. data/lib/bandwidth/voice_lib/bxml/verbs/ring.rb +15 -0
  20. data/lib/bandwidth/voice_lib/bxml/verbs/transfer.rb +5 -1
  21. data/lib/bandwidth/voice_lib/voice.rb +8 -2
  22. data/lib/bandwidth/voice_lib/voice/client.rb +9 -2
  23. data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +625 -55
  24. data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +1 -1
  25. data/lib/bandwidth/voice_lib/voice/models/answer_fallback_method_enum.rb +17 -0
  26. data/lib/bandwidth/voice_lib/voice/models/api_call_response.rb +45 -0
  27. data/lib/bandwidth/voice_lib/voice/models/api_create_call_request.rb +45 -0
  28. data/lib/bandwidth/voice_lib/voice/models/api_modify_call_request.rb +36 -0
  29. data/lib/bandwidth/voice_lib/voice/models/api_transcribe_recording_request.rb +11 -2
  30. data/lib/bandwidth/voice_lib/voice/models/call_engine_modify_conference_request.rb +74 -2
  31. data/lib/bandwidth/voice_lib/voice/models/conference_detail.rb +108 -0
  32. data/lib/bandwidth/voice_lib/voice/models/conference_event_method_enum.rb +35 -0
  33. data/lib/bandwidth/voice_lib/voice/models/conference_member_detail.rb +80 -0
  34. data/lib/bandwidth/voice_lib/voice/models/conference_recording_metadata_response.rb +126 -0
  35. data/lib/bandwidth/voice_lib/voice/models/recording_metadata_response.rb +32 -4
  36. data/lib/bandwidth/voice_lib/voice/models/redirect_fallback_method_enum.rb +17 -0
  37. data/lib/bandwidth/voice_lib/voice/models/state_enum.rb +3 -3
  38. data/lib/bandwidth/voice_lib/voice/models/status1_enum.rb +4 -1
  39. data/lib/bandwidth/voice_lib/voice/models/{status2_enum.rb → status3_enum.rb} +3 -3
  40. data/lib/bandwidth/voice_lib/voice/models/transcription.rb +1 -1
  41. data/lib/bandwidth/web_rtc_lib/web_rtc.rb +21 -0
  42. data/lib/bandwidth/web_rtc_lib/web_rtc/client.rb +51 -0
  43. data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/api_controller.rb +692 -0
  44. data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/base_controller.rb +49 -0
  45. data/lib/bandwidth/web_rtc_lib/web_rtc/exceptions/error_exception.rb +34 -0
  46. data/lib/bandwidth/web_rtc_lib/web_rtc/models/accounts_participants_response.rb +47 -0
  47. data/lib/bandwidth/web_rtc_lib/web_rtc/models/participant.rb +83 -0
  48. data/lib/bandwidth/web_rtc_lib/web_rtc/models/participant_subscription.rb +35 -0
  49. data/lib/bandwidth/web_rtc_lib/web_rtc/models/publish_permission_enum.rb +17 -0
  50. data/lib/bandwidth/web_rtc_lib/web_rtc/models/session.rb +44 -0
  51. data/lib/bandwidth/web_rtc_lib/web_rtc/models/subscriptions.rb +54 -0
  52. metadata +43 -11
@@ -0,0 +1,17 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ # RedirectFallbackMethod.
8
+ class RedirectFallbackMethodEnum
9
+ REDIRECT_FALLBACK_METHOD_ENUM = [
10
+ # TODO: Write general description for POST
11
+ POST = 'POST'.freeze,
12
+
13
+ # TODO: Write general description for GET
14
+ GET = 'GET'.freeze
15
+ ].freeze
16
+ end
17
+ end
@@ -8,13 +8,13 @@ module Bandwidth
8
8
  class StateEnum
9
9
  STATE_ENUM = [
10
10
  # TODO: Write general description for DISCONNECTED
11
- DISCONNECTED = 'DISCONNECTED'.freeze,
11
+ DISCONNECTED = 'disconnected'.freeze,
12
12
 
13
13
  # TODO: Write general description for ANSWERED
14
- ANSWERED = 'ANSWERED'.freeze,
14
+ ANSWERED = 'answered'.freeze,
15
15
 
16
16
  # TODO: Write general description for INITIATED
17
- INITIATED = 'INITIATED'.freeze
17
+ INITIATED = 'initiated'.freeze
18
18
  ].freeze
19
19
  end
20
20
  end
@@ -20,7 +20,10 @@ module Bandwidth
20
20
  DELETED = 'deleted'.freeze,
21
21
 
22
22
  # TODO: Write general description for ERROR
23
- ERROR = 'error'.freeze
23
+ ERROR = 'error'.freeze,
24
+
25
+ # TODO: Write general description for ALREADYINPROGRESS
26
+ ALREADYINPROGRESS = 'already-in-progress'.freeze
24
27
  ].freeze
25
28
  end
26
29
  end
@@ -4,9 +4,9 @@
4
4
  # ( https://apimatic.io ).
5
5
 
6
6
  module Bandwidth
7
- # Status2.
8
- class Status2Enum
9
- STATUS2_ENUM = [
7
+ # Status3.
8
+ class Status3Enum
9
+ STATUS3_ENUM = [
10
10
  # TODO: Write general description for NONE
11
11
  NONE = 'none'.freeze,
12
12
 
@@ -11,7 +11,7 @@ module Bandwidth
11
11
  attr_accessor :id
12
12
 
13
13
  # TODO: Write general description for this method
14
- # @return [Status2Enum]
14
+ # @return [Status3Enum]
15
15
  attr_accessor :status
16
16
 
17
17
  # TODO: Write general description for this method
@@ -0,0 +1,21 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+
7
+ require_relative 'web_rtc/client.rb'
8
+
9
+ # Models
10
+ require_relative 'web_rtc/models/session.rb'
11
+ require_relative 'web_rtc/models/participant.rb'
12
+ require_relative 'web_rtc/models/subscriptions.rb'
13
+ require_relative 'web_rtc/models/participant_subscription.rb'
14
+ require_relative 'web_rtc/models/accounts_participants_response.rb'
15
+ require_relative 'web_rtc/models/publish_permission_enum.rb'
16
+
17
+ # Exceptions
18
+ require_relative 'web_rtc/exceptions/error_exception.rb'
19
+ # Controllers
20
+ require_relative 'web_rtc/controllers/base_controller.rb'
21
+ require_relative 'web_rtc/controllers/api_controller.rb'
@@ -0,0 +1,51 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ module WebRtc
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: 60, max_retries: 0, retry_interval: 1,
19
+ backoff_factor: 1, environment: Environment::PRODUCTION,
20
+ base_url: 'https://www.example.com',
21
+ messaging_basic_auth_user_name: 'TODO: Replace',
22
+ messaging_basic_auth_password: 'TODO: Replace',
23
+ two_factor_auth_basic_auth_user_name: 'TODO: Replace',
24
+ two_factor_auth_basic_auth_password: 'TODO: Replace',
25
+ voice_basic_auth_user_name: 'TODO: Replace',
26
+ voice_basic_auth_password: 'TODO: Replace',
27
+ web_rtc_basic_auth_user_name: 'TODO: Replace',
28
+ web_rtc_basic_auth_password: 'TODO: Replace',
29
+ config: nil)
30
+ @config = if config.nil?
31
+ Configuration.new(timeout: timeout,
32
+ max_retries: max_retries,
33
+ retry_interval: retry_interval,
34
+ backoff_factor: backoff_factor,
35
+ environment: environment,
36
+ base_url: base_url,
37
+ messaging_basic_auth_user_name: messaging_basic_auth_user_name,
38
+ messaging_basic_auth_password: messaging_basic_auth_password,
39
+ two_factor_auth_basic_auth_user_name: two_factor_auth_basic_auth_user_name,
40
+ two_factor_auth_basic_auth_password: two_factor_auth_basic_auth_password,
41
+ voice_basic_auth_user_name: voice_basic_auth_user_name,
42
+ voice_basic_auth_password: voice_basic_auth_password,
43
+ web_rtc_basic_auth_user_name: web_rtc_basic_auth_user_name,
44
+ web_rtc_basic_auth_password: web_rtc_basic_auth_password)
45
+ else
46
+ config
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,692 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ module WebRtc
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
+ # Create a new participant under this account
15
+ # Participants are idempotent, so relevant parameters must be set in this
16
+ # function if desired
17
+ # @param [String] account_id Required parameter: Account ID
18
+ # @param [Participant] body Optional parameter: Participant parameters
19
+ # @return [AccountsParticipantsResponse] response from the API call
20
+ def create_participant(account_id,
21
+ body: nil)
22
+ # Prepare query url.
23
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
24
+ _query_builder << '/accounts/{accountId}/participants'
25
+ _query_builder = APIHelper.append_url_with_template_parameters(
26
+ _query_builder,
27
+ 'accountId' => { 'value' => account_id, 'encode' => true }
28
+ )
29
+ _query_url = APIHelper.clean_url _query_builder
30
+
31
+ # Prepare headers.
32
+ _headers = {
33
+ 'accept' => 'application/json',
34
+ 'content-type' => 'application/json; charset=utf-8'
35
+ }
36
+
37
+ # Prepare and execute HttpRequest.
38
+ _request = config.http_client.post(
39
+ _query_url,
40
+ headers: _headers,
41
+ parameters: body.to_json
42
+ )
43
+ WebRtcBasicAuth.apply(config, _request)
44
+ _response = execute_request(_request)
45
+
46
+ # Validate response against endpoint and global error codes.
47
+ if _response.status_code == 400
48
+ raise APIException.new(
49
+ 'Bad Request',
50
+ _response
51
+ )
52
+ elsif _response.status_code == 401
53
+ raise APIException.new(
54
+ 'Unauthorized',
55
+ _response
56
+ )
57
+ elsif _response.status_code == 403
58
+ raise APIException.new(
59
+ 'Access Denied',
60
+ _response
61
+ )
62
+ end
63
+ unless _response.status_code.between?(200, 208)
64
+ raise ErrorException.new(
65
+ 'Unexpected Error',
66
+ _response
67
+ )
68
+ end
69
+ validate_response(_response)
70
+
71
+ # Return appropriate response type.
72
+ decoded = APIHelper.json_deserialize(_response.raw_body)
73
+ ApiResponse.new(
74
+ _response,
75
+ data: AccountsParticipantsResponse.from_hash(decoded)
76
+ )
77
+ end
78
+
79
+ # Get participant by ID
80
+ # @param [String] account_id Required parameter: Account ID
81
+ # @param [String] participant_id Required parameter: Participant ID
82
+ # @return [Participant] response from the API call
83
+ def get_participant(account_id,
84
+ participant_id)
85
+ # Prepare query url.
86
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
87
+ _query_builder << '/accounts/{accountId}/participants/{participantId}'
88
+ _query_builder = APIHelper.append_url_with_template_parameters(
89
+ _query_builder,
90
+ 'accountId' => { 'value' => account_id, 'encode' => true },
91
+ 'participantId' => { 'value' => participant_id, 'encode' => true }
92
+ )
93
+ _query_url = APIHelper.clean_url _query_builder
94
+
95
+ # Prepare headers.
96
+ _headers = {
97
+ 'accept' => 'application/json'
98
+ }
99
+
100
+ # Prepare and execute HttpRequest.
101
+ _request = config.http_client.get(
102
+ _query_url,
103
+ headers: _headers
104
+ )
105
+ WebRtcBasicAuth.apply(config, _request)
106
+ _response = execute_request(_request)
107
+
108
+ # Validate response against endpoint and global error codes.
109
+ if _response.status_code == 401
110
+ raise APIException.new(
111
+ 'Unauthorized',
112
+ _response
113
+ )
114
+ elsif _response.status_code == 403
115
+ raise APIException.new(
116
+ 'Access Denied',
117
+ _response
118
+ )
119
+ elsif _response.status_code == 404
120
+ raise APIException.new(
121
+ 'Not Found',
122
+ _response
123
+ )
124
+ end
125
+ unless _response.status_code.between?(200, 208)
126
+ raise ErrorException.new(
127
+ 'Unexpected Error',
128
+ _response
129
+ )
130
+ end
131
+ validate_response(_response)
132
+
133
+ # Return appropriate response type.
134
+ decoded = APIHelper.json_deserialize(_response.raw_body)
135
+ ApiResponse.new(
136
+ _response, data: Participant.from_hash(decoded)
137
+ )
138
+ end
139
+
140
+ # Delete participant by ID
141
+ # @param [String] account_id Required parameter: Account ID
142
+ # @param [String] participant_id Required parameter: Example:
143
+ # @return [void] response from the API call
144
+ def delete_participant(account_id,
145
+ participant_id)
146
+ # Prepare query url.
147
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
148
+ _query_builder << '/accounts/{accountId}/participants/{participantId}'
149
+ _query_builder = APIHelper.append_url_with_template_parameters(
150
+ _query_builder,
151
+ 'accountId' => { 'value' => account_id, 'encode' => true },
152
+ 'participantId' => { 'value' => participant_id, 'encode' => true }
153
+ )
154
+ _query_url = APIHelper.clean_url _query_builder
155
+
156
+ # Prepare and execute HttpRequest.
157
+ _request = config.http_client.delete(
158
+ _query_url
159
+ )
160
+ WebRtcBasicAuth.apply(config, _request)
161
+ _response = execute_request(_request)
162
+
163
+ # Validate response against endpoint and global error codes.
164
+ if _response.status_code == 401
165
+ raise APIException.new(
166
+ 'Unauthorized',
167
+ _response
168
+ )
169
+ elsif _response.status_code == 403
170
+ raise APIException.new(
171
+ 'Access Denied',
172
+ _response
173
+ )
174
+ elsif _response.status_code == 404
175
+ raise APIException.new(
176
+ 'Not Found',
177
+ _response
178
+ )
179
+ end
180
+ unless _response.status_code.between?(200, 208)
181
+ raise ErrorException.new(
182
+ 'Unexpected Error',
183
+ _response
184
+ )
185
+ end
186
+ validate_response(_response)
187
+
188
+ # Return appropriate response type.
189
+ ApiResponse.new(_response)
190
+ end
191
+
192
+ # Create a new session
193
+ # Sessions are idempotent, so relevant parameters must be set in this
194
+ # function if desired
195
+ # @param [String] account_id Required parameter: Account ID
196
+ # @param [Session] body Optional parameter: Session parameters
197
+ # @return [Session] response from the API call
198
+ def create_session(account_id,
199
+ body: nil)
200
+ # Prepare query url.
201
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
202
+ _query_builder << '/accounts/{accountId}/sessions'
203
+ _query_builder = APIHelper.append_url_with_template_parameters(
204
+ _query_builder,
205
+ 'accountId' => { 'value' => account_id, 'encode' => true }
206
+ )
207
+ _query_url = APIHelper.clean_url _query_builder
208
+
209
+ # Prepare headers.
210
+ _headers = {
211
+ 'accept' => 'application/json',
212
+ 'content-type' => 'application/json; charset=utf-8'
213
+ }
214
+
215
+ # Prepare and execute HttpRequest.
216
+ _request = config.http_client.post(
217
+ _query_url,
218
+ headers: _headers,
219
+ parameters: body.to_json
220
+ )
221
+ WebRtcBasicAuth.apply(config, _request)
222
+ _response = execute_request(_request)
223
+
224
+ # Validate response against endpoint and global error codes.
225
+ if _response.status_code == 400
226
+ raise APIException.new(
227
+ 'Bad Request',
228
+ _response
229
+ )
230
+ elsif _response.status_code == 401
231
+ raise APIException.new(
232
+ 'Unauthorized',
233
+ _response
234
+ )
235
+ elsif _response.status_code == 403
236
+ raise APIException.new(
237
+ 'Access Denied',
238
+ _response
239
+ )
240
+ end
241
+ unless _response.status_code.between?(200, 208)
242
+ raise ErrorException.new(
243
+ 'Unexpected Error',
244
+ _response
245
+ )
246
+ end
247
+ validate_response(_response)
248
+
249
+ # Return appropriate response type.
250
+ decoded = APIHelper.json_deserialize(_response.raw_body)
251
+ ApiResponse.new(
252
+ _response, data: Session.from_hash(decoded)
253
+ )
254
+ end
255
+
256
+ # Get session by ID
257
+ # @param [String] account_id Required parameter: Account ID
258
+ # @param [String] session_id Required parameter: Session ID
259
+ # @return [Session] response from the API call
260
+ def get_session(account_id,
261
+ session_id)
262
+ # Prepare query url.
263
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
264
+ _query_builder << '/accounts/{accountId}/sessions/{sessionId}'
265
+ _query_builder = APIHelper.append_url_with_template_parameters(
266
+ _query_builder,
267
+ 'accountId' => { 'value' => account_id, 'encode' => true },
268
+ 'sessionId' => { 'value' => session_id, 'encode' => true }
269
+ )
270
+ _query_url = APIHelper.clean_url _query_builder
271
+
272
+ # Prepare headers.
273
+ _headers = {
274
+ 'accept' => 'application/json'
275
+ }
276
+
277
+ # Prepare and execute HttpRequest.
278
+ _request = config.http_client.get(
279
+ _query_url,
280
+ headers: _headers
281
+ )
282
+ WebRtcBasicAuth.apply(config, _request)
283
+ _response = execute_request(_request)
284
+
285
+ # Validate response against endpoint and global error codes.
286
+ if _response.status_code == 401
287
+ raise APIException.new(
288
+ 'Unauthorized',
289
+ _response
290
+ )
291
+ elsif _response.status_code == 403
292
+ raise APIException.new(
293
+ 'Access Denied',
294
+ _response
295
+ )
296
+ elsif _response.status_code == 404
297
+ raise APIException.new(
298
+ 'Not Found',
299
+ _response
300
+ )
301
+ end
302
+ unless _response.status_code.between?(200, 208)
303
+ raise ErrorException.new(
304
+ 'Unexpected Error',
305
+ _response
306
+ )
307
+ end
308
+ validate_response(_response)
309
+
310
+ # Return appropriate response type.
311
+ decoded = APIHelper.json_deserialize(_response.raw_body)
312
+ ApiResponse.new(
313
+ _response, data: Session.from_hash(decoded)
314
+ )
315
+ end
316
+
317
+ # Delete session by ID
318
+ # @param [String] account_id Required parameter: Account ID
319
+ # @param [String] session_id Required parameter: Session ID
320
+ # @return [void] response from the API call
321
+ def delete_session(account_id,
322
+ session_id)
323
+ # Prepare query url.
324
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
325
+ _query_builder << '/accounts/{accountId}/sessions/{sessionId}'
326
+ _query_builder = APIHelper.append_url_with_template_parameters(
327
+ _query_builder,
328
+ 'accountId' => { 'value' => account_id, 'encode' => true },
329
+ 'sessionId' => { 'value' => session_id, 'encode' => true }
330
+ )
331
+ _query_url = APIHelper.clean_url _query_builder
332
+
333
+ # Prepare and execute HttpRequest.
334
+ _request = config.http_client.delete(
335
+ _query_url
336
+ )
337
+ WebRtcBasicAuth.apply(config, _request)
338
+ _response = execute_request(_request)
339
+
340
+ # Validate response against endpoint and global error codes.
341
+ if _response.status_code == 401
342
+ raise APIException.new(
343
+ 'Unauthorized',
344
+ _response
345
+ )
346
+ elsif _response.status_code == 403
347
+ raise APIException.new(
348
+ 'Access Denied',
349
+ _response
350
+ )
351
+ elsif _response.status_code == 404
352
+ raise APIException.new(
353
+ 'Not Found',
354
+ _response
355
+ )
356
+ end
357
+ unless _response.status_code.between?(200, 208)
358
+ raise ErrorException.new(
359
+ 'Unexpected Error',
360
+ _response
361
+ )
362
+ end
363
+ validate_response(_response)
364
+
365
+ # Return appropriate response type.
366
+ ApiResponse.new(_response)
367
+ end
368
+
369
+ # List participants in a session
370
+ # @param [String] account_id Required parameter: Account ID
371
+ # @param [String] session_id Required parameter: Session ID
372
+ # @return [List of Participant] response from the API call
373
+ def list_session_participants(account_id,
374
+ session_id)
375
+ # Prepare query url.
376
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
377
+ _query_builder << '/accounts/{accountId}/sessions/{sessionId}/participants'
378
+ _query_builder = APIHelper.append_url_with_template_parameters(
379
+ _query_builder,
380
+ 'accountId' => { 'value' => account_id, 'encode' => true },
381
+ 'sessionId' => { 'value' => session_id, 'encode' => true }
382
+ )
383
+ _query_url = APIHelper.clean_url _query_builder
384
+
385
+ # Prepare headers.
386
+ _headers = {
387
+ 'accept' => 'application/json'
388
+ }
389
+
390
+ # Prepare and execute HttpRequest.
391
+ _request = config.http_client.get(
392
+ _query_url,
393
+ headers: _headers
394
+ )
395
+ WebRtcBasicAuth.apply(config, _request)
396
+ _response = execute_request(_request)
397
+
398
+ # Validate response against endpoint and global error codes.
399
+ if _response.status_code == 401
400
+ raise APIException.new(
401
+ 'Unauthorized',
402
+ _response
403
+ )
404
+ elsif _response.status_code == 403
405
+ raise APIException.new(
406
+ 'Access Denied',
407
+ _response
408
+ )
409
+ elsif _response.status_code == 404
410
+ raise APIException.new(
411
+ 'Not Found',
412
+ _response
413
+ )
414
+ end
415
+ unless _response.status_code.between?(200, 208)
416
+ raise ErrorException.new(
417
+ 'Unexpected Error',
418
+ _response
419
+ )
420
+ end
421
+ validate_response(_response)
422
+
423
+ # Return appropriate response type.
424
+ decoded = APIHelper.json_deserialize(_response.raw_body)
425
+ ApiResponse.new(
426
+ _response,
427
+ data: decoded.map { |element| Participant.from_hash(element) }
428
+ )
429
+ end
430
+
431
+ # Add a participant to a session
432
+ # Subscriptions can optionally be provided as part of this call
433
+ # @param [String] account_id Required parameter: Account ID
434
+ # @param [String] session_id Required parameter: Session ID
435
+ # @param [String] participant_id Required parameter: Participant ID
436
+ # @param [Subscriptions] body Optional parameter: Subscriptions the
437
+ # participant should be created with
438
+ # @return [void] response from the API call
439
+ def add_participant_to_session(account_id,
440
+ session_id,
441
+ participant_id,
442
+ body: nil)
443
+ # Prepare query url.
444
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
445
+ _query_builder << '/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}'
446
+ _query_builder = APIHelper.append_url_with_template_parameters(
447
+ _query_builder,
448
+ 'accountId' => { 'value' => account_id, 'encode' => true },
449
+ 'sessionId' => { 'value' => session_id, 'encode' => true },
450
+ 'participantId' => { 'value' => participant_id, 'encode' => true }
451
+ )
452
+ _query_url = APIHelper.clean_url _query_builder
453
+
454
+ # Prepare headers.
455
+ _headers = {
456
+ 'content-type' => 'application/json; charset=utf-8'
457
+ }
458
+
459
+ # Prepare and execute HttpRequest.
460
+ _request = config.http_client.put(
461
+ _query_url,
462
+ headers: _headers,
463
+ parameters: body.to_json
464
+ )
465
+ WebRtcBasicAuth.apply(config, _request)
466
+ _response = execute_request(_request)
467
+
468
+ # Validate response against endpoint and global error codes.
469
+ if _response.status_code == 401
470
+ raise APIException.new(
471
+ 'Unauthorized',
472
+ _response
473
+ )
474
+ elsif _response.status_code == 403
475
+ raise APIException.new(
476
+ 'Access Denied',
477
+ _response
478
+ )
479
+ elsif _response.status_code == 404
480
+ raise APIException.new(
481
+ 'Not Found',
482
+ _response
483
+ )
484
+ end
485
+ unless _response.status_code.between?(200, 208)
486
+ raise ErrorException.new(
487
+ 'Unexpected Error',
488
+ _response
489
+ )
490
+ end
491
+ validate_response(_response)
492
+
493
+ # Return appropriate response type.
494
+ ApiResponse.new(_response)
495
+ end
496
+
497
+ # Remove a participant from a session
498
+ # This will automatically remove any subscriptions the participant has
499
+ # associated with this session
500
+ # @param [String] account_id Required parameter: Account ID
501
+ # @param [String] participant_id Required parameter: Participant ID
502
+ # @param [String] session_id Required parameter: Session ID
503
+ # @return [void] response from the API call
504
+ def remove_participant_from_session(account_id,
505
+ participant_id,
506
+ session_id)
507
+ # Prepare query url.
508
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
509
+ _query_builder << '/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}'
510
+ _query_builder = APIHelper.append_url_with_template_parameters(
511
+ _query_builder,
512
+ 'accountId' => { 'value' => account_id, 'encode' => true },
513
+ 'participantId' => { 'value' => participant_id, 'encode' => true },
514
+ 'sessionId' => { 'value' => session_id, 'encode' => true }
515
+ )
516
+ _query_url = APIHelper.clean_url _query_builder
517
+
518
+ # Prepare and execute HttpRequest.
519
+ _request = config.http_client.delete(
520
+ _query_url
521
+ )
522
+ WebRtcBasicAuth.apply(config, _request)
523
+ _response = execute_request(_request)
524
+
525
+ # Validate response against endpoint and global error codes.
526
+ if _response.status_code == 401
527
+ raise APIException.new(
528
+ 'Unauthorized',
529
+ _response
530
+ )
531
+ elsif _response.status_code == 403
532
+ raise APIException.new(
533
+ 'Access Denied',
534
+ _response
535
+ )
536
+ elsif _response.status_code == 404
537
+ raise APIException.new(
538
+ 'Not Found',
539
+ _response
540
+ )
541
+ end
542
+ unless _response.status_code.between?(200, 208)
543
+ raise ErrorException.new(
544
+ 'Unexpected Error',
545
+ _response
546
+ )
547
+ end
548
+ validate_response(_response)
549
+
550
+ # Return appropriate response type.
551
+ ApiResponse.new(_response)
552
+ end
553
+
554
+ # Get a participant's subscriptions
555
+ # @param [String] account_id Required parameter: Account ID
556
+ # @param [String] participant_id Required parameter: Participant ID
557
+ # @param [String] session_id Required parameter: Session ID
558
+ # @return [Subscriptions] response from the API call
559
+ def get_participant_subscriptions(account_id,
560
+ participant_id,
561
+ session_id)
562
+ # Prepare query url.
563
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
564
+ _query_builder << '/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}/subscriptions'
565
+ _query_builder = APIHelper.append_url_with_template_parameters(
566
+ _query_builder,
567
+ 'accountId' => { 'value' => account_id, 'encode' => true },
568
+ 'participantId' => { 'value' => participant_id, 'encode' => true },
569
+ 'sessionId' => { 'value' => session_id, 'encode' => true }
570
+ )
571
+ _query_url = APIHelper.clean_url _query_builder
572
+
573
+ # Prepare headers.
574
+ _headers = {
575
+ 'accept' => 'application/json'
576
+ }
577
+
578
+ # Prepare and execute HttpRequest.
579
+ _request = config.http_client.get(
580
+ _query_url,
581
+ headers: _headers
582
+ )
583
+ WebRtcBasicAuth.apply(config, _request)
584
+ _response = execute_request(_request)
585
+
586
+ # Validate response against endpoint and global error codes.
587
+ if _response.status_code == 401
588
+ raise APIException.new(
589
+ 'Unauthorized',
590
+ _response
591
+ )
592
+ elsif _response.status_code == 403
593
+ raise APIException.new(
594
+ 'Access Denied',
595
+ _response
596
+ )
597
+ elsif _response.status_code == 404
598
+ raise APIException.new(
599
+ 'Not Found',
600
+ _response
601
+ )
602
+ end
603
+ unless _response.status_code.between?(200, 208)
604
+ raise ErrorException.new(
605
+ 'Unexpected Error',
606
+ _response
607
+ )
608
+ end
609
+ validate_response(_response)
610
+
611
+ # Return appropriate response type.
612
+ decoded = APIHelper.json_deserialize(_response.raw_body)
613
+ ApiResponse.new(
614
+ _response, data: Subscriptions.from_hash(decoded)
615
+ )
616
+ end
617
+
618
+ # Update a participant's subscriptions
619
+ # This is a full update that will replace the participant's subscriptions.
620
+ # First call `getParticipantSubscriptions` if you need the current
621
+ # subscriptions. Call this function with no `Subscriptions` object to remove
622
+ # all subscriptions
623
+ # @param [String] account_id Required parameter: Account ID
624
+ # @param [String] participant_id Required parameter: Participant ID
625
+ # @param [String] session_id Required parameter: Session ID
626
+ # @param [Subscriptions] body Optional parameter: Initial state
627
+ # @return [void] response from the API call
628
+ def update_participant_subscriptions(account_id,
629
+ participant_id,
630
+ session_id,
631
+ body: nil)
632
+ # Prepare query url.
633
+ _query_builder = config.get_base_uri(Server::WEBRTCDEFAULT)
634
+ _query_builder << '/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}/subscriptions'
635
+ _query_builder = APIHelper.append_url_with_template_parameters(
636
+ _query_builder,
637
+ 'accountId' => { 'value' => account_id, 'encode' => true },
638
+ 'participantId' => { 'value' => participant_id, 'encode' => true },
639
+ 'sessionId' => { 'value' => session_id, 'encode' => true }
640
+ )
641
+ _query_url = APIHelper.clean_url _query_builder
642
+
643
+ # Prepare headers.
644
+ _headers = {
645
+ 'content-type' => 'application/json; charset=utf-8'
646
+ }
647
+
648
+ # Prepare and execute HttpRequest.
649
+ _request = config.http_client.put(
650
+ _query_url,
651
+ headers: _headers,
652
+ parameters: body.to_json
653
+ )
654
+ WebRtcBasicAuth.apply(config, _request)
655
+ _response = execute_request(_request)
656
+
657
+ # Validate response against endpoint and global error codes.
658
+ if _response.status_code == 400
659
+ raise APIException.new(
660
+ 'Bad Request',
661
+ _response
662
+ )
663
+ elsif _response.status_code == 401
664
+ raise APIException.new(
665
+ 'Unauthorized',
666
+ _response
667
+ )
668
+ elsif _response.status_code == 403
669
+ raise APIException.new(
670
+ 'Access Denied',
671
+ _response
672
+ )
673
+ elsif _response.status_code == 404
674
+ raise APIException.new(
675
+ 'Not Found',
676
+ _response
677
+ )
678
+ end
679
+ unless _response.status_code.between?(200, 208)
680
+ raise ErrorException.new(
681
+ 'Unexpected Error',
682
+ _response
683
+ )
684
+ end
685
+ validate_response(_response)
686
+
687
+ # Return appropriate response type.
688
+ ApiResponse.new(_response)
689
+ end
690
+ end
691
+ end
692
+ end