bandwidth-sdk 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +27 -27
- data/README.md +18 -59
- data/lib/bandwidth/api_helper.rb +4 -0
- data/lib/bandwidth/client.rb +1 -1
- data/lib/bandwidth/configuration.rb +2 -2
- data/lib/bandwidth/messaging_lib/messaging/client.rb +1 -1
- data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +1 -1
- data/lib/bandwidth/voice_lib/bxml/verbs/record.rb +26 -0
- data/lib/bandwidth/voice_lib/voice.rb +6 -5
- data/lib/bandwidth/voice_lib/voice/client.rb +1 -1
- data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +178 -98
- data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +1 -1
- data/lib/bandwidth/voice_lib/voice/models/api_call_response.rb +67 -40
- data/lib/bandwidth/voice_lib/voice/models/direction_enum.rb +17 -0
- data/lib/bandwidth/voice_lib/voice/models/duration.rb +78 -0
- data/lib/bandwidth/voice_lib/voice/models/file_format_enum.rb +17 -0
- data/lib/bandwidth/voice_lib/voice/models/recording_metadata_response.rb +152 -0
- data/lib/bandwidth/voice_lib/voice/models/state_enum.rb +2 -2
- data/lib/bandwidth/voice_lib/voice/models/temporal_unit.rb +62 -0
- data/lib/bandwidth/voice_lib/voice/models/transcription_status_enum.rb +20 -0
- metadata +15 -13
- data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_exception.rb +0 -51
- data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_not_found_exception.rb +0 -49
- data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_rate_limit_error_exception.rb +0 -56
- data/lib/bandwidth/voice_lib/voice/models/bandwidth_callback_message_voice.rb +0 -98
- data/lib/bandwidth/voice_lib/voice/models/field_error.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18591a5d5044520f1468b2739bf7f7d3f2e55c90256808ee87c88035b2547955
|
4
|
+
data.tar.gz: 94718076a51266243ac4da676d6719ae4c3c8143f1ee41a2d4f74845160f5a7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4a3945a2bdc1dc56df26eaf365a6be187c25949accedcc1b711079273e42b29fcbffcb1a336a0a92f2e563638a01bfdfc0d6c2c2314fa7bb5be11b42f8c4cbe
|
7
|
+
data.tar.gz: 79820119110f3e897e7da7115a957db73ebaa3ad27255c96de2ab7d740415bd85e221aafc72561fdff7ad9666fe845755dd436d8aac071eb9b975ab80b61f566
|
data/LICENSE
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
|
2
|
-
========
|
3
|
-
The MIT License (MIT)
|
4
|
-
http://opensource.org/licenses/MIT
|
5
|
-
|
6
|
-
Copyright (c) 2014 - 2016 APIMATIC Limited
|
7
|
-
|
8
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
of this software and associated documentation files (the "Software"), to deal
|
10
|
-
in the Software without restriction, including without limitation the rights
|
11
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
-
copies of the Software, and to permit persons to whom the Software is
|
13
|
-
furnished to do so, subject to the following conditions:
|
14
|
-
|
15
|
-
The above copyright notice and this permission notice shall be included in
|
16
|
-
all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
THE SOFTWARE.
|
25
|
-
|
26
|
-
Trade Mark:
|
27
|
-
==========
|
1
|
+
License:
|
2
|
+
========
|
3
|
+
The MIT License (MIT)
|
4
|
+
http://opensource.org/licenses/MIT
|
5
|
+
|
6
|
+
Copyright (c) 2014 - 2016 APIMATIC Limited
|
7
|
+
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
of this software and associated documentation files (the "Software"), to deal
|
10
|
+
in the Software without restriction, including without limitation the rights
|
11
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
+
copies of the Software, and to permit persons to whom the Software is
|
13
|
+
furnished to do so, subject to the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be included in
|
16
|
+
all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
THE SOFTWARE.
|
25
|
+
|
26
|
+
Trade Mark:
|
27
|
+
==========
|
28
28
|
APIMATIC is a trade mark for APIMATIC Limited
|
data/README.md
CHANGED
@@ -2,69 +2,28 @@
|
|
2
2
|
|
3
3
|
Bandwidth's set of APIs
|
4
4
|
|
5
|
+
## Install the Package
|
5
6
|
|
6
|
-
|
7
|
+
Install the gem from the command line:
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
2. Install Bundler if not already installed: `gem install bundler`
|
12
|
-
3. From terminal/cmd navigate to the root directory of the SDK.
|
13
|
-
4. Invoke: `rake install`
|
14
|
-
|
15
|
-
Alternatively, you can build and install the gem manually:
|
16
|
-
|
17
|
-
1. From terminal/cmd navigate to the root directory of the SDK.
|
18
|
-
2. Run the build command: `gem build bandwidth.gemspec`
|
19
|
-
3. Run the install command: `gem install bandwidth-1.0.1.gem`
|
20
|
-
|
21
|
-
![Installing Gem](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&gemVer=1.0.1&gemName=bandwidth&step=buildSDK)
|
22
|
-
|
23
|
-
## Installation
|
24
|
-
|
25
|
-
The following section explains how to use the bandwidth ruby gem in a new Rails project using RubyMine™. The basic workflow presented here is also applicable if you prefer using a different editor or IDE.
|
26
|
-
|
27
|
-
### 1. Starting a new project
|
28
|
-
|
29
|
-
Close any existing projects in RubyMine™ by selecting `File -> Close Project`. Next, click on `Create New Project` to create a new project from scratch.
|
30
|
-
|
31
|
-
![Create a new project in RubyMine - Step 1](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&step=createNewProject0)
|
32
|
-
|
33
|
-
Next, provide `TestApp` as the project name, choose `Rails Application` as the project type, and click `OK`.
|
34
|
-
|
35
|
-
![Create a new Rails Application in RubyMine - Step 2](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&step=createNewProject1)
|
36
|
-
|
37
|
-
In the next dialog make sure that the correct Ruby SDK is being used (minimum 2.0.0) and click `OK`.
|
38
|
-
|
39
|
-
![Create a new Rails Application in RubyMine - Step 3](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&step=createNewProject2)
|
40
|
-
|
41
|
-
### 2. Add reference of the gem
|
42
|
-
|
43
|
-
In order to use the Tester gem in the new project we must add a gem reference. Locate the `Gemfile` in the Project Explorer window under the `TestApp` project node. The file contains references to all gems being used in the project. Here, add the reference to the library gem by adding the following line: `gem 'bandwidth', '~> 1.0.1'`
|
44
|
-
|
45
|
-
![Add new reference to the Gemfile](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&gemVer=1.0.1&gemName=bandwidth&step=addReference)
|
46
|
-
|
47
|
-
### 3. Adding a new Rails Controller
|
48
|
-
|
49
|
-
Once the `TestApp` project is created, a folder named `controllers` will be visible in the *Project Explorer* under the following path: `TestApp > app > controllers`. Right click on this folder and select `New -> Run Rails Generator...`.
|
50
|
-
|
51
|
-
![Run Rails Generator on Controllers Folder](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&gemVer=1.0.1&gemName=bandwidth&step=addCode0)
|
9
|
+
```ruby
|
10
|
+
gem install bandwidth-sdk -v 1.0.2
|
11
|
+
```
|
52
12
|
|
53
|
-
|
13
|
+
Or add the gem to your Gemfile and run `bundle`:
|
54
14
|
|
55
|
-
|
15
|
+
```ruby
|
16
|
+
gem 'bandwidth-sdk', '1.0.2'
|
17
|
+
```
|
56
18
|
|
57
|
-
|
19
|
+
For additional gem details, see the [RubyGems page for the bandwidth-sdk gem](https://rubygems.org/gems/bandwidth-sdk/versions/1.0.2).
|
58
20
|
|
59
|
-
![Add a new Controller](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&gemVer=1.0.1&gemName=bandwidth&step=addCode2)
|
60
21
|
|
61
|
-
A new controller class named `HelloController` will be created in a file named `hello_controller.rb` containing a method named `Index`. In this method, add code for initialization and a sample for its usage.
|
62
22
|
|
63
|
-
![Initialize the library](https://apidocs.io/illustration/ruby?workspaceFolder=Bandwidth&gemName=bandwidth&step=addCode3)
|
64
23
|
|
65
|
-
##
|
24
|
+
## Initialize the API Client
|
66
25
|
|
67
|
-
|
26
|
+
The following parameters are configurable for the API Client.
|
68
27
|
|
69
28
|
| Parameter | Type | Description |
|
70
29
|
| --- | --- | --- |
|
@@ -72,12 +31,13 @@ To initialize the API client, the following parameters need to be passed.
|
|
72
31
|
| `messaging_basic_auth_password` | `String` | The password to use with basic authentication |
|
73
32
|
| `voice_basic_auth_user_name` | `String` | The username to use with basic authentication |
|
74
33
|
| `voice_basic_auth_password` | `String` | The password to use with basic authentication |
|
75
|
-
| `
|
76
|
-
| `
|
77
|
-
| `
|
78
|
-
| `
|
34
|
+
| `environment` | Environment | The API environment. <br> **Default: `Environment.PRODUCTION`** |
|
35
|
+
| `timeout` | `Float` | The value to use for connection timeout. <br> **Default: 60** |
|
36
|
+
| `max_retries` | `Integer` | The number of times to retry an endpoint call if it fails. <br> **Default: 0** |
|
37
|
+
| `retry_interval` | `Float` | Pause in seconds between retries. <br> **Default: 1** |
|
38
|
+
| `backoff_factor` | `Float` | The amount to multiply each successive retry's interval amount by in order to provide backoff. <br> **Default: 1** |
|
79
39
|
|
80
|
-
The API client can be initialized
|
40
|
+
The API client can be initialized as following.
|
81
41
|
|
82
42
|
```ruby
|
83
43
|
client = Bandwidth::Client.new(
|
@@ -101,7 +61,6 @@ API calls return an `ApiResponse` object that includes the following fields:
|
|
101
61
|
| `errors` | Errors, if they exist |
|
102
62
|
| `data` | The deserialized body of the HTTP response |
|
103
63
|
|
104
|
-
|
105
64
|
## Authorization
|
106
65
|
|
107
66
|
This API does not require authentication.
|
data/lib/bandwidth/api_helper.rb
CHANGED
@@ -235,6 +235,10 @@ module Bandwidth
|
|
235
235
|
retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
|
236
236
|
key.to_s + ']', formatting: formatting))
|
237
237
|
end
|
238
|
+
elsif obj.instance_of? File
|
239
|
+
retval[instance_name] = UploadIO.new(
|
240
|
+
obj, 'application/octet-stream', File.basename(obj.path)
|
241
|
+
)
|
238
242
|
else
|
239
243
|
retval[instance_name] = obj
|
240
244
|
end
|
data/lib/bandwidth/client.rb
CHANGED
@@ -18,7 +18,7 @@ module Bandwidth
|
|
18
18
|
@voice_client ||= Voice::Client.new(config: config)
|
19
19
|
end
|
20
20
|
|
21
|
-
def initialize(timeout:
|
21
|
+
def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
|
22
22
|
backoff_factor: 1, environment: Environment::PRODUCTION,
|
23
23
|
messaging_basic_auth_user_name: 'TODO: Replace',
|
24
24
|
messaging_basic_auth_password: 'TODO: Replace',
|
@@ -39,7 +39,7 @@ module Bandwidth
|
|
39
39
|
attr_reader :environments
|
40
40
|
end
|
41
41
|
|
42
|
-
def initialize(timeout:
|
42
|
+
def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
|
43
43
|
backoff_factor: 1, environment: Environment::PRODUCTION,
|
44
44
|
messaging_basic_auth_user_name: 'TODO: Replace',
|
45
45
|
messaging_basic_auth_password: 'TODO: Replace',
|
@@ -115,7 +115,7 @@ module Bandwidth
|
|
115
115
|
Environment::PRODUCTION => {
|
116
116
|
Server::DEFAULT => 'api.bandwidth.com',
|
117
117
|
Server::MESSAGINGDEFAULT => 'https://messaging.bandwidth.com/api/v2',
|
118
|
-
Server::VOICEDEFAULT => 'https://voice.bandwidth.com
|
118
|
+
Server::VOICEDEFAULT => 'https://voice.bandwidth.com'
|
119
119
|
}
|
120
120
|
}
|
121
121
|
|
@@ -15,7 +15,7 @@ module Bandwidth
|
|
15
15
|
@client ||= APIController.new config
|
16
16
|
end
|
17
17
|
|
18
|
-
def initialize(timeout:
|
18
|
+
def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
|
19
19
|
backoff_factor: 1, environment: Environment::PRODUCTION,
|
20
20
|
messaging_basic_auth_user_name: 'TODO: Replace',
|
21
21
|
messaging_basic_auth_password: 'TODO: Replace',
|
@@ -29,7 +29,7 @@ module Bandwidth
|
|
29
29
|
@http_call_back.on_before_request(request) if @http_call_back
|
30
30
|
|
31
31
|
APIHelper.clean_hash(request.headers)
|
32
|
-
request.headers
|
32
|
+
request.headers.merge!(@global_headers)
|
33
33
|
|
34
34
|
response = if binary
|
35
35
|
config.http_client.execute_as_binary(request)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
require_relative 'xml_verb'
|
3
|
+
|
4
|
+
module Bandwidth
|
5
|
+
module Voice
|
6
|
+
# The Record verb is used to trigger call recording
|
7
|
+
class Record
|
8
|
+
include XmlVerb
|
9
|
+
|
10
|
+
def to_bxml(xml)
|
11
|
+
xml.Record(compact_hash({
|
12
|
+
'tag' => tag,
|
13
|
+
'username' => username,
|
14
|
+
'password' => password,
|
15
|
+
'recordCompleteUrl' => record_complete_url,
|
16
|
+
'recordCompleteMethod' => record_complete_method,
|
17
|
+
'recordingAvailableUrl' => recording_available_url,
|
18
|
+
'recordingAvailableMethod' => recording_available_method,
|
19
|
+
'terminatingDigits' => terminating_digits,
|
20
|
+
'maxDuration' => max_duration,
|
21
|
+
'fileFormat' => file_format
|
22
|
+
}))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -7,20 +7,21 @@
|
|
7
7
|
require_relative 'voice/client.rb'
|
8
8
|
|
9
9
|
# Models
|
10
|
-
require_relative 'voice/models/field_error.rb'
|
11
10
|
require_relative 'voice/models/api_call_response.rb'
|
12
11
|
require_relative 'voice/models/api_create_call_request.rb'
|
13
12
|
require_relative 'voice/models/api_modify_call_request.rb'
|
14
|
-
require_relative 'voice/models/
|
13
|
+
require_relative 'voice/models/duration.rb'
|
14
|
+
require_relative 'voice/models/recording_metadata_response.rb'
|
15
|
+
require_relative 'voice/models/temporal_unit.rb'
|
15
16
|
require_relative 'voice/models/answer_method_enum.rb'
|
17
|
+
require_relative 'voice/models/direction_enum.rb'
|
16
18
|
require_relative 'voice/models/disconnect_method_enum.rb'
|
19
|
+
require_relative 'voice/models/file_format_enum.rb'
|
17
20
|
require_relative 'voice/models/redirect_method_enum.rb'
|
18
21
|
require_relative 'voice/models/state_enum.rb'
|
22
|
+
require_relative 'voice/models/transcription_status_enum.rb'
|
19
23
|
|
20
24
|
# Exceptions
|
21
|
-
require_relative 'voice/exceptions/bandwidth_exception.rb'
|
22
|
-
require_relative 'voice/exceptions/bandwidth_not_found_exception.rb'
|
23
|
-
require_relative 'voice/exceptions/bandwidth_rate_limit_error_exception.rb'
|
24
25
|
# Controllers
|
25
26
|
require_relative 'voice/controllers/base_controller.rb'
|
26
27
|
require_relative 'voice/controllers/api_controller.rb'
|
@@ -15,7 +15,7 @@ module Bandwidth
|
|
15
15
|
@client ||= APIController.new config
|
16
16
|
end
|
17
17
|
|
18
|
-
def initialize(timeout:
|
18
|
+
def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
|
19
19
|
backoff_factor: 1, environment: Environment::PRODUCTION,
|
20
20
|
messaging_basic_auth_user_name: 'TODO: Replace',
|
21
21
|
messaging_basic_auth_password: 'TODO: Replace',
|
@@ -19,7 +19,7 @@ module Voice
|
|
19
19
|
body: nil)
|
20
20
|
# Prepare query url.
|
21
21
|
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
22
|
-
_query_builder << '/accounts/{accountId}/calls'
|
22
|
+
_query_builder << '/api/v2/accounts/{accountId}/calls'
|
23
23
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
24
24
|
_query_builder,
|
25
25
|
'accountId' => account_id
|
@@ -40,54 +40,6 @@ module Voice
|
|
40
40
|
)
|
41
41
|
VoiceBasicAuth.apply(config, _request)
|
42
42
|
_response = execute_request(_request)
|
43
|
-
|
44
|
-
# Validate response against endpoint and global error codes.
|
45
|
-
if _response.status_code == 400
|
46
|
-
raise BandwidthException.new(
|
47
|
-
'400 request is malformed or invalid',
|
48
|
-
_response
|
49
|
-
)
|
50
|
-
elsif _response.status_code == 401
|
51
|
-
raise BandwidthException.new(
|
52
|
-
'401 The specified user does not have access to the account',
|
53
|
-
_response
|
54
|
-
)
|
55
|
-
elsif _response.status_code == 403
|
56
|
-
raise BandwidthException.new(
|
57
|
-
'403 The user does not have access to the API',
|
58
|
-
_response
|
59
|
-
)
|
60
|
-
elsif _response.status_code == 404
|
61
|
-
raise BandwidthNotFoundException.new(
|
62
|
-
'404 he call-id is no longer active, or the path is not found',
|
63
|
-
_response
|
64
|
-
)
|
65
|
-
elsif _response.status_code == 409
|
66
|
-
raise BandwidthException.new(
|
67
|
-
'409 Error when modifying a call that is unable to be modified',
|
68
|
-
_response
|
69
|
-
)
|
70
|
-
elsif _response.status_code == 415
|
71
|
-
raise BandwidthException.new(
|
72
|
-
'415 The content-type of the request is incorrect',
|
73
|
-
_response
|
74
|
-
)
|
75
|
-
elsif _response.status_code == 429
|
76
|
-
raise BandwidthRateLimitErrorException.new(
|
77
|
-
'429 The rate limit has been reached',
|
78
|
-
_response
|
79
|
-
)
|
80
|
-
elsif _response.status_code == 500
|
81
|
-
raise BandwidthException.new(
|
82
|
-
'500 Unknown server error',
|
83
|
-
_response
|
84
|
-
)
|
85
|
-
elsif _response.status_code == 503
|
86
|
-
raise BandwidthException.new(
|
87
|
-
'503 The service is unavailable for some reason',
|
88
|
-
_response
|
89
|
-
)
|
90
|
-
end
|
91
43
|
validate_response(_response)
|
92
44
|
|
93
45
|
# Return appropriate response type.
|
@@ -95,7 +47,7 @@ module Voice
|
|
95
47
|
ApiResponse.new(_response, data: ApiCallResponse.from_hash(decoded))
|
96
48
|
end
|
97
49
|
|
98
|
-
#
|
50
|
+
# Interrupts and replaces an active call's BXML document
|
99
51
|
# @param [String] account_id Required parameter: Example:
|
100
52
|
# @param [String] call_id Required parameter: Example:
|
101
53
|
# @param [ApiModifyCallRequest] body Optional parameter: Example:
|
@@ -105,7 +57,7 @@ module Voice
|
|
105
57
|
body: nil)
|
106
58
|
# Prepare query url.
|
107
59
|
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
108
|
-
_query_builder << '/accounts/{accountId}/calls/{callId}'
|
60
|
+
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}'
|
109
61
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
110
62
|
_query_builder,
|
111
63
|
'accountId' => account_id,
|
@@ -126,59 +78,187 @@ module Voice
|
|
126
78
|
)
|
127
79
|
VoiceBasicAuth.apply(config, _request)
|
128
80
|
_response = execute_request(_request)
|
81
|
+
validate_response(_response)
|
82
|
+
|
83
|
+
# Return appropriate response type.
|
84
|
+
ApiResponse.new(_response)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Returns a (potentially empty) list of metadata for the recordings that
|
88
|
+
# took place during the specified call
|
89
|
+
# @param [String] account_id Required parameter: Example:
|
90
|
+
# @param [String] call_id Required parameter: Example:
|
91
|
+
# @return [List of RecordingMetadataResponse] response from the API call
|
92
|
+
def get_query_metadata_for_account_and_call(account_id,
|
93
|
+
call_id)
|
94
|
+
# Prepare query url.
|
95
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
96
|
+
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings'
|
97
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
98
|
+
_query_builder,
|
99
|
+
'accountId' => account_id,
|
100
|
+
'callId' => call_id
|
101
|
+
)
|
102
|
+
_query_url = APIHelper.clean_url _query_builder
|
103
|
+
|
104
|
+
# Prepare headers.
|
105
|
+
_headers = {
|
106
|
+
'accept' => 'application/json'
|
107
|
+
}
|
108
|
+
|
109
|
+
# Prepare and execute HttpRequest.
|
110
|
+
_request = config.http_client.get(
|
111
|
+
_query_url,
|
112
|
+
headers: _headers
|
113
|
+
)
|
114
|
+
VoiceBasicAuth.apply(config, _request)
|
115
|
+
_response = execute_request(_request)
|
116
|
+
validate_response(_response)
|
117
|
+
|
118
|
+
# Return appropriate response type.
|
119
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
120
|
+
ApiResponse.new(
|
121
|
+
_response,
|
122
|
+
data: decoded.map { |element| RecordingMetadataResponse.from_hash(element) }
|
123
|
+
)
|
124
|
+
end
|
125
|
+
|
126
|
+
# Returns metadata for the specified recording
|
127
|
+
# @param [String] recording_id Required parameter: Example:
|
128
|
+
# @param [String] account_id Required parameter: Example:
|
129
|
+
# @param [String] call_id Required parameter: Example:
|
130
|
+
# @return [RecordingMetadataResponse] response from the API call
|
131
|
+
def get_metadata_for_recording(recording_id,
|
132
|
+
account_id,
|
133
|
+
call_id)
|
134
|
+
# Prepare query url.
|
135
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
136
|
+
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}'
|
137
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
138
|
+
_query_builder,
|
139
|
+
'recordingId' => recording_id,
|
140
|
+
'accountId' => account_id,
|
141
|
+
'callId' => call_id
|
142
|
+
)
|
143
|
+
_query_url = APIHelper.clean_url _query_builder
|
144
|
+
|
145
|
+
# Prepare headers.
|
146
|
+
_headers = {
|
147
|
+
'accept' => 'application/json'
|
148
|
+
}
|
149
|
+
|
150
|
+
# Prepare and execute HttpRequest.
|
151
|
+
_request = config.http_client.get(
|
152
|
+
_query_url,
|
153
|
+
headers: _headers
|
154
|
+
)
|
155
|
+
VoiceBasicAuth.apply(config, _request)
|
156
|
+
_response = execute_request(_request)
|
157
|
+
validate_response(_response)
|
158
|
+
|
159
|
+
# Return appropriate response type.
|
160
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
161
|
+
ApiResponse.new(_response,
|
162
|
+
data: RecordingMetadataResponse.from_hash(decoded))
|
163
|
+
end
|
129
164
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
)
|
156
|
-
elsif _response.status_code == 415
|
157
|
-
raise BandwidthException.new(
|
158
|
-
'415 The content-type of the request is incorrect',
|
159
|
-
_response
|
160
|
-
)
|
161
|
-
elsif _response.status_code == 429
|
162
|
-
raise BandwidthRateLimitErrorException.new(
|
163
|
-
'429 The rate limit has been reached',
|
164
|
-
_response
|
165
|
-
)
|
166
|
-
elsif _response.status_code == 500
|
167
|
-
raise BandwidthException.new(
|
168
|
-
'500 Unknown server error',
|
169
|
-
_response
|
170
|
-
)
|
171
|
-
elsif _response.status_code == 503
|
172
|
-
raise BandwidthException.new(
|
173
|
-
'503 The service is unavailable for some reason',
|
174
|
-
_response
|
175
|
-
)
|
176
|
-
end
|
165
|
+
# Deletes the specified recording
|
166
|
+
# @param [String] recording_id Required parameter: Example:
|
167
|
+
# @param [String] account_id Required parameter: Example:
|
168
|
+
# @param [String] call_id Required parameter: Example:
|
169
|
+
# @return [void] response from the API call
|
170
|
+
def delete_recording(recording_id,
|
171
|
+
account_id,
|
172
|
+
call_id)
|
173
|
+
# Prepare query url.
|
174
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
175
|
+
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}'
|
176
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
177
|
+
_query_builder,
|
178
|
+
'recordingId' => recording_id,
|
179
|
+
'accountId' => account_id,
|
180
|
+
'callId' => call_id
|
181
|
+
)
|
182
|
+
_query_url = APIHelper.clean_url _query_builder
|
183
|
+
|
184
|
+
# Prepare and execute HttpRequest.
|
185
|
+
_request = config.http_client.delete(
|
186
|
+
_query_url
|
187
|
+
)
|
188
|
+
VoiceBasicAuth.apply(config, _request)
|
189
|
+
_response = execute_request(_request)
|
177
190
|
validate_response(_response)
|
178
191
|
|
179
192
|
# Return appropriate response type.
|
180
193
|
ApiResponse.new(_response)
|
181
194
|
end
|
195
|
+
|
196
|
+
# Downloads the specified recording
|
197
|
+
# @param [String] account_id Required parameter: Example:
|
198
|
+
# @param [String] call_id Required parameter: Example:
|
199
|
+
# @param [String] recording_id Required parameter: Example:
|
200
|
+
# @return [String] response from the API call
|
201
|
+
def get_stream_recording_media(account_id,
|
202
|
+
call_id,
|
203
|
+
recording_id)
|
204
|
+
# Prepare query url.
|
205
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
206
|
+
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media'
|
207
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
208
|
+
_query_builder,
|
209
|
+
'accountId' => account_id,
|
210
|
+
'callId' => call_id,
|
211
|
+
'recordingId' => recording_id
|
212
|
+
)
|
213
|
+
_query_url = APIHelper.clean_url _query_builder
|
214
|
+
|
215
|
+
# Prepare and execute HttpRequest.
|
216
|
+
_request = config.http_client.get(
|
217
|
+
_query_url
|
218
|
+
)
|
219
|
+
VoiceBasicAuth.apply(config, _request)
|
220
|
+
_response = execute_request(_request)
|
221
|
+
validate_response(_response)
|
222
|
+
|
223
|
+
# Return appropriate response type.
|
224
|
+
ApiResponse.new(_response, data: _response.raw_body)
|
225
|
+
end
|
226
|
+
|
227
|
+
# Returns a (potentially empty; capped at 1000) list of metadata for the
|
228
|
+
# recordings associated with the specified account
|
229
|
+
# @param [String] account_id Required parameter: Example:
|
230
|
+
# @return [List of RecordingMetadataResponse] response from the API call
|
231
|
+
def get_query_metadata_for_account(account_id)
|
232
|
+
# Prepare query url.
|
233
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
234
|
+
_query_builder << '/api/v2/accounts/{accountId}/recordings'
|
235
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
236
|
+
_query_builder,
|
237
|
+
'accountId' => account_id
|
238
|
+
)
|
239
|
+
_query_url = APIHelper.clean_url _query_builder
|
240
|
+
|
241
|
+
# Prepare headers.
|
242
|
+
_headers = {
|
243
|
+
'accept' => 'application/json'
|
244
|
+
}
|
245
|
+
|
246
|
+
# Prepare and execute HttpRequest.
|
247
|
+
_request = config.http_client.get(
|
248
|
+
_query_url,
|
249
|
+
headers: _headers
|
250
|
+
)
|
251
|
+
VoiceBasicAuth.apply(config, _request)
|
252
|
+
_response = execute_request(_request)
|
253
|
+
validate_response(_response)
|
254
|
+
|
255
|
+
# Return appropriate response type.
|
256
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
257
|
+
ApiResponse.new(
|
258
|
+
_response,
|
259
|
+
data: decoded.map { |element| RecordingMetadataResponse.from_hash(element) }
|
260
|
+
)
|
261
|
+
end
|
182
262
|
end
|
183
263
|
end
|
184
264
|
end
|