nexmo 6.2.0 → 7.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +21 -3
- data/lib/nexmo.rb +2 -0
- data/lib/nexmo/abstract_authentication.rb +2 -2
- data/lib/nexmo/account.rb +6 -1
- data/lib/nexmo/alerts.rb +6 -1
- data/lib/nexmo/applications.rb +24 -3
- data/lib/nexmo/applications/list_response.rb +2 -0
- data/lib/nexmo/authentication_error.rb +2 -0
- data/lib/nexmo/basic.rb +2 -0
- data/lib/nexmo/bearer_token.rb +1 -0
- data/lib/nexmo/client.rb +46 -23
- data/lib/nexmo/client_error.rb +2 -0
- data/lib/nexmo/config.rb +49 -9
- data/lib/nexmo/conversations.rb +24 -0
- data/lib/nexmo/conversations/events.rb +1 -0
- data/lib/nexmo/conversations/legs.rb +1 -0
- data/lib/nexmo/conversations/members.rb +1 -0
- data/lib/nexmo/conversations/users.rb +1 -0
- data/lib/nexmo/conversions.rb +4 -0
- data/lib/nexmo/entity.rb +3 -1
- data/lib/nexmo/error.rb +2 -0
- data/lib/nexmo/errors.rb +8 -0
- data/lib/nexmo/files.rb +7 -2
- data/lib/nexmo/form_data.rb +2 -0
- data/lib/nexmo/gsm7.rb +2 -2
- data/lib/nexmo/http.rb +12 -3
- data/lib/nexmo/json.rb +4 -0
- data/lib/nexmo/jwt.rb +5 -1
- data/lib/nexmo/key_secret_params.rb +10 -2
- data/lib/nexmo/keys.rb +7 -1
- data/lib/nexmo/logger.rb +14 -4
- data/lib/nexmo/messages.rb +7 -1
- data/lib/nexmo/namespace.rb +15 -18
- data/lib/nexmo/number_insight.rb +21 -6
- data/lib/nexmo/numbers.rb +2 -1
- data/lib/nexmo/numbers/list_response.rb +2 -0
- data/lib/nexmo/numbers/response.rb +1 -0
- data/lib/nexmo/params.rb +1 -0
- data/lib/nexmo/pricing.rb +2 -1
- data/lib/nexmo/pricing_types.rb +1 -0
- data/lib/nexmo/redact.rb +1 -0
- data/lib/nexmo/response.rb +2 -0
- data/lib/nexmo/secrets.rb +1 -0
- data/lib/nexmo/secrets/list_response.rb +2 -0
- data/lib/nexmo/server_error.rb +2 -0
- data/lib/nexmo/signature.rb +1 -0
- data/lib/nexmo/sms.rb +16 -10
- data/lib/nexmo/tfa.rb +2 -1
- data/lib/nexmo/user_agent.rb +1 -0
- data/lib/nexmo/verify.rb +93 -17
- data/lib/nexmo/version.rb +3 -1
- data/lib/nexmo/{calls.rb → voice.rb} +12 -11
- data/lib/nexmo/{calls → voice}/dtmf.rb +2 -1
- data/lib/nexmo/{calls → voice}/list_response.rb +3 -1
- data/lib/nexmo/{calls → voice}/stream.rb +2 -1
- data/lib/nexmo/{calls → voice}/talk.rb +2 -1
- data/nexmo.gemspec +1 -0
- metadata +22 -11
- data/lib/nexmo/number_insight/response.rb +0 -5
- data/lib/nexmo/sms/response.rb +0 -7
- data/lib/nexmo/verify/response.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 964a347a61a516b4161b0110412b262ff82614b5c48cddb0d85ee6b9878854ee
|
4
|
+
data.tar.gz: 50edc921ee4c8a8e4f7172d5c1d8ec3efa195d04d9923efcd98c2f4f6623d145
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b35dad79758fb59d4ef8662b6684afd655965ca402832c19b652c7985a4234ad3d815dbbbe190ccfda001901067918e3518fce6d3aa31c9f3ed88e09e8bfacb
|
7
|
+
data.tar.gz: 91b1f197f77d8cfd7fcabc3d35d69e6b9adbad8d1dd30c0f0e7f8d376bc7dc521dd519ab0184c79ec1d02fb879afaaf0c8c606fc6a13692c03ba8804e31d0f92
|
data/README.md
CHANGED
@@ -2,15 +2,18 @@
|
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/nexmo) [](https://travis-ci.org/Nexmo/nexmo-ruby) [](https://coveralls.io/github/Nexmo/nexmo-ruby?branch=master)
|
4
4
|
|
5
|
+
<img src="https://developer.nexmo.com/assets/images/Vonage_Nexmo.svg" height="48px" alt="Nexmo is now known as Vonage" />
|
6
|
+
|
5
7
|
This is the Ruby client library for Nexmo's API. To use it you'll
|
6
8
|
need a Nexmo account. Sign up [for free at nexmo.com][signup].
|
7
9
|
|
8
10
|
* [Requirements](#requirements)
|
9
11
|
* [Installation](#installation)
|
10
12
|
* [Usage](#usage)
|
11
|
-
* [Logging](#logging)
|
12
|
-
* [
|
13
|
-
* [
|
13
|
+
* [Logging](#logging)
|
14
|
+
* [Overriding the default hosts](#overriding-the-default-hosts)
|
15
|
+
* [JWT authentication](#jwt-authentication)
|
16
|
+
* [Webhook signatures](#webhook-signatures)
|
14
17
|
* [Documentation](#documentation)
|
15
18
|
* [License](#license)
|
16
19
|
|
@@ -73,6 +76,21 @@ By default the library sets the logger to `Rails.logger` if it is defined.
|
|
73
76
|
To disable logging set the logger to `nil`.
|
74
77
|
|
75
78
|
|
79
|
+
## Overriding the default hosts
|
80
|
+
|
81
|
+
To override the default hosts that the SDK uses for HTTP requests, you need to
|
82
|
+
specify the `api_host`, `rest_host` or both in the client configuration. For example:
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
client = Nexmo::Client.new(
|
86
|
+
api_host: 'api-sg-1.nexmo.com',
|
87
|
+
rest_host: 'rest-sg-1.nexmo.com'
|
88
|
+
)
|
89
|
+
```
|
90
|
+
|
91
|
+
By default the hosts are set to `api.nexmo.com` and `rest.nexmo.com`, respectively.
|
92
|
+
|
93
|
+
|
76
94
|
## JWT authentication
|
77
95
|
|
78
96
|
To call newer endpoints that support JWT authentication such as the Voice API you'll
|
data/lib/nexmo.rb
CHANGED
data/lib/nexmo/account.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# typed: strict
|
1
2
|
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module Nexmo
|
4
5
|
class Account < Namespace
|
6
|
+
extend T::Sig
|
5
7
|
include Keys
|
6
8
|
|
7
|
-
self.host =
|
9
|
+
self.host = :rest_host
|
8
10
|
|
9
11
|
# Retrieve your account balance.
|
10
12
|
#
|
@@ -12,6 +14,7 @@ module Nexmo
|
|
12
14
|
#
|
13
15
|
# @see https://developer.nexmo.com/api/developer/account#get-balance
|
14
16
|
#
|
17
|
+
sig { returns(Nexmo::Response) }
|
15
18
|
def balance
|
16
19
|
request('/account/get-balance')
|
17
20
|
end
|
@@ -34,6 +37,7 @@ module Nexmo
|
|
34
37
|
#
|
35
38
|
# @see https://developer.nexmo.com/api/developer/account#settings
|
36
39
|
#
|
40
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(Nexmo::Response) }
|
37
41
|
def update(params)
|
38
42
|
request('/account/settings', params: camelcase(params), type: Post)
|
39
43
|
end
|
@@ -49,6 +53,7 @@ module Nexmo
|
|
49
53
|
#
|
50
54
|
# @see https://developer.nexmo.com/api/developer/account#top-up
|
51
55
|
#
|
56
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(Nexmo::Response) }
|
52
57
|
def topup(params)
|
53
58
|
request('/account/top-up', params: params, type: Post)
|
54
59
|
end
|
data/lib/nexmo/alerts.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# typed: strict
|
1
2
|
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module Nexmo
|
4
5
|
class Alerts < Namespace
|
5
|
-
|
6
|
+
extend T::Sig
|
7
|
+
self.host = :rest_host
|
6
8
|
|
7
9
|
# Request the list of phone numbers opted out from your campaign.
|
8
10
|
#
|
@@ -10,6 +12,7 @@ module Nexmo
|
|
10
12
|
#
|
11
13
|
# @return [Response]
|
12
14
|
#
|
15
|
+
sig { returns(Nexmo::Response) }
|
13
16
|
def list
|
14
17
|
request('/sc/us/alert/opt-in/query/json')
|
15
18
|
end
|
@@ -25,6 +28,7 @@ module Nexmo
|
|
25
28
|
#
|
26
29
|
# @see https://developer.nexmo.com/api/sms/us-short-codes/alerts/subscription
|
27
30
|
#
|
31
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(Nexmo::Response) }
|
28
32
|
def remove(params)
|
29
33
|
request('/sc/us/alert/opt-in/manage/json', params: params, type: Post)
|
30
34
|
end
|
@@ -60,6 +64,7 @@ module Nexmo
|
|
60
64
|
#
|
61
65
|
# @see https://developer.nexmo.com/api/sms/us-short-codes/alerts/sending
|
62
66
|
#
|
67
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(Nexmo::Response) }
|
63
68
|
def send(params)
|
64
69
|
request('/sc/us/alert/json', params: params, type: Post)
|
65
70
|
end
|
data/lib/nexmo/applications.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
# typed: strict
|
1
2
|
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module Nexmo
|
4
5
|
class Applications < Namespace
|
6
|
+
extend T::Sig
|
5
7
|
self.authentication = Basic
|
6
8
|
|
7
9
|
self.request_body = JSON
|
@@ -13,9 +15,20 @@ module Nexmo
|
|
13
15
|
# @example
|
14
16
|
# params = {
|
15
17
|
# name: 'Example App',
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
18
|
+
# capabilities: {
|
19
|
+
# 'messages': {
|
20
|
+
# 'webhooks': {
|
21
|
+
# 'inbound_url': {
|
22
|
+
# 'address': 'https://example.com/webhooks/inbound',
|
23
|
+
# 'http_method': 'POST'
|
24
|
+
# },
|
25
|
+
# 'status_url': {
|
26
|
+
# 'address': 'https://example.com/webhooks/status',
|
27
|
+
# 'http_method': 'POST'
|
28
|
+
# }
|
29
|
+
# }
|
30
|
+
# }
|
31
|
+
# }
|
19
32
|
# }
|
20
33
|
#
|
21
34
|
# response = client.applications.create(params)
|
@@ -37,6 +50,7 @@ module Nexmo
|
|
37
50
|
#
|
38
51
|
# @see https://developer.nexmo.com/api/application.v2#createApplication
|
39
52
|
#
|
53
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(Nexmo::Response) }
|
40
54
|
def create(params)
|
41
55
|
request('/v2/applications', params: params, type: Post)
|
42
56
|
end
|
@@ -61,6 +75,7 @@ module Nexmo
|
|
61
75
|
#
|
62
76
|
# @see https://developer.nexmo.com/api/application.v2#listApplication
|
63
77
|
#
|
78
|
+
sig { params(params: T.nilable(T::Hash[Symbol, Integer])).returns(Nexmo::Response) }
|
64
79
|
def list(params = nil)
|
65
80
|
request('/v2/applications', params: params, response_class: ListResponse)
|
66
81
|
end
|
@@ -76,6 +91,7 @@ module Nexmo
|
|
76
91
|
#
|
77
92
|
# @see https://developer.nexmo.com/api/application.v2#getApplication
|
78
93
|
#
|
94
|
+
sig { params(id: String).returns(Nexmo::Response) }
|
79
95
|
def get(id)
|
80
96
|
request('/v2/applications/' + id)
|
81
97
|
end
|
@@ -103,6 +119,10 @@ module Nexmo
|
|
103
119
|
#
|
104
120
|
# @see https://developer.nexmo.com/api/application.v2#updateApplication
|
105
121
|
#
|
122
|
+
sig { params(
|
123
|
+
id: String,
|
124
|
+
params: T::Hash[Symbol, T.untyped]
|
125
|
+
).returns(Nexmo::Response) }
|
106
126
|
def update(id, params)
|
107
127
|
request('/v2/applications/' + id, params: params, type: Put)
|
108
128
|
end
|
@@ -120,6 +140,7 @@ module Nexmo
|
|
120
140
|
#
|
121
141
|
# @see https://developer.nexmo.com/api/application.v2#deleteApplication
|
122
142
|
#
|
143
|
+
sig { params(id: String).returns(Nexmo::Response) }
|
123
144
|
def delete(id)
|
124
145
|
request('/v2/applications/' + id, type: Delete)
|
125
146
|
end
|
data/lib/nexmo/basic.rb
CHANGED
data/lib/nexmo/bearer_token.rb
CHANGED
data/lib/nexmo/client.rb
CHANGED
@@ -1,111 +1,134 @@
|
|
1
|
+
# typed: strict
|
2
|
+
|
1
3
|
module Nexmo
|
2
4
|
class Client
|
5
|
+
extend T::Sig
|
6
|
+
|
7
|
+
sig { returns(Nexmo::Config) }
|
3
8
|
attr_reader :config
|
4
9
|
|
10
|
+
sig { params(options: T.nilable(T::Hash[Symbol, T.untyped])).void }
|
5
11
|
def initialize(options = nil)
|
6
|
-
@config = Nexmo.config.merge(options)
|
12
|
+
@config = T.let(Nexmo.config.merge(options), Nexmo::Config)
|
7
13
|
end
|
8
14
|
|
9
15
|
# @return [Signature]
|
10
16
|
#
|
17
|
+
sig { returns(T.nilable(Nexmo::Signature)) }
|
11
18
|
def signature
|
12
|
-
@signature ||= Signature.new(config)
|
19
|
+
@signature ||= T.let(Signature.new(config), T.nilable(Nexmo::Signature))
|
13
20
|
end
|
14
21
|
|
15
22
|
# @return [Account]
|
16
23
|
#
|
24
|
+
sig { returns(T.nilable(Nexmo::Account)) }
|
17
25
|
def account
|
18
|
-
@account ||= Account.new(config)
|
26
|
+
@account ||= T.let(Account.new(config), T.nilable(Nexmo::Account))
|
19
27
|
end
|
20
28
|
|
21
29
|
# @return [Alerts]
|
22
30
|
#
|
31
|
+
sig { returns(T.nilable(Nexmo::Alerts)) }
|
23
32
|
def alerts
|
24
|
-
@alerts ||= Alerts.new(config)
|
33
|
+
@alerts ||= T.let(Alerts.new(config), T.nilable(Nexmo::Alerts))
|
25
34
|
end
|
26
35
|
|
27
36
|
# @return [Applications]
|
28
37
|
#
|
38
|
+
sig { returns(T.nilable(Nexmo::Applications)) }
|
29
39
|
def applications
|
30
|
-
@applications ||= Applications.new(config)
|
31
|
-
end
|
32
|
-
|
33
|
-
# @return [Calls]
|
34
|
-
#
|
35
|
-
def calls
|
36
|
-
@calls ||= Calls.new(config)
|
40
|
+
@applications ||= T.let(Applications.new(config), T.nilable(Nexmo::Applications))
|
37
41
|
end
|
38
42
|
|
39
43
|
# @return [Conversations]
|
40
44
|
#
|
45
|
+
sig { returns(T.nilable(Nexmo::Conversations)) }
|
41
46
|
def conversations
|
42
|
-
@conversations ||= Conversations.new(config)
|
47
|
+
@conversations ||= T.let(Conversations.new(config), T.nilable(Nexmo::Conversations))
|
43
48
|
end
|
44
49
|
|
45
50
|
# @return [Conversions]
|
46
51
|
#
|
52
|
+
sig { returns(T.nilable(Nexmo::Conversions)) }
|
47
53
|
def conversions
|
48
|
-
@conversions ||= Conversions.new(config)
|
54
|
+
@conversions ||= T.let(Conversions.new(config), T.nilable(Nexmo::Conversions))
|
49
55
|
end
|
50
56
|
|
51
57
|
# @return [Files]
|
52
58
|
#
|
59
|
+
sig { returns(T.nilable(Nexmo::Files)) }
|
53
60
|
def files
|
54
|
-
@files ||= Files.new(config)
|
61
|
+
@files ||= T.let(Files.new(config), T.nilable(Nexmo::Files))
|
55
62
|
end
|
56
63
|
|
57
64
|
# @return [Messages]
|
58
65
|
#
|
66
|
+
sig { returns(T.nilable(Nexmo::Messages)) }
|
59
67
|
def messages
|
60
|
-
@messages ||= Messages.new(config)
|
68
|
+
@messages ||= T.let(Messages.new(config), T.nilable(Nexmo::Messages))
|
61
69
|
end
|
62
70
|
|
63
71
|
# @return [NumberInsight]
|
64
72
|
#
|
73
|
+
sig { returns(T.nilable(Nexmo::NumberInsight)) }
|
65
74
|
def number_insight
|
66
|
-
@number_insight ||= NumberInsight.new(config)
|
75
|
+
@number_insight ||= T.let(NumberInsight.new(config), T.nilable(Nexmo::NumberInsight))
|
67
76
|
end
|
68
77
|
|
69
78
|
# @return [Numbers]
|
70
79
|
#
|
80
|
+
sig { returns(T.nilable(Nexmo::Numbers)) }
|
71
81
|
def numbers
|
72
|
-
@numbers ||= Numbers.new(config)
|
82
|
+
@numbers ||= T.let(Numbers.new(config), T.nilable(Nexmo::Numbers))
|
73
83
|
end
|
74
84
|
|
75
85
|
# @return [PricingTypes]
|
76
86
|
#
|
87
|
+
sig { returns(T.nilable(Nexmo::PricingTypes)) }
|
77
88
|
def pricing
|
78
|
-
@pricing ||= PricingTypes.new(config)
|
89
|
+
@pricing ||= T.let(PricingTypes.new(config), T.nilable(Nexmo::PricingTypes))
|
79
90
|
end
|
80
91
|
|
81
92
|
# @return [Redact]
|
82
93
|
#
|
94
|
+
sig { returns(T.nilable(Nexmo::Redact)) }
|
83
95
|
def redact
|
84
|
-
@redact ||= Redact.new(config)
|
96
|
+
@redact ||= T.let(Redact.new(config), T.nilable(Nexmo::Redact))
|
85
97
|
end
|
86
98
|
|
87
99
|
# @return [Secrets]
|
88
100
|
#
|
101
|
+
sig { returns(T.nilable(Nexmo::Secrets)) }
|
89
102
|
def secrets
|
90
|
-
@secrets ||= Secrets.new(config)
|
103
|
+
@secrets ||= T.let(Secrets.new(config), T.nilable(Nexmo::Secrets))
|
91
104
|
end
|
92
105
|
|
93
106
|
# @return [SMS]
|
94
107
|
#
|
108
|
+
sig { returns(T.nilable(Nexmo::SMS)) }
|
95
109
|
def sms
|
96
|
-
@sms ||= SMS.new(config)
|
110
|
+
@sms ||= T.let(SMS.new(config), T.nilable(Nexmo::SMS))
|
97
111
|
end
|
98
112
|
|
99
113
|
# @return [TFA]
|
100
114
|
#
|
115
|
+
sig { returns(T.nilable(Nexmo::TFA)) }
|
101
116
|
def tfa
|
102
|
-
@tfa ||= TFA.new(config)
|
117
|
+
@tfa ||= T.let(TFA.new(config), T.nilable(Nexmo::TFA))
|
103
118
|
end
|
104
119
|
|
105
120
|
# @return [Verify]
|
106
121
|
#
|
122
|
+
sig { returns(T.nilable(Nexmo::Verify)) }
|
107
123
|
def verify
|
108
|
-
@verify ||= Verify.new(config)
|
124
|
+
@verify ||= T.let(Verify.new(config), T.nilable(Nexmo::Verify))
|
125
|
+
end
|
126
|
+
|
127
|
+
# @return [Voice]
|
128
|
+
#
|
129
|
+
sig { returns(T.nilable(Nexmo::Voice)) }
|
130
|
+
def voice
|
131
|
+
@voice ||= T.let(Voice.new(config), T.nilable(Nexmo::Voice))
|
109
132
|
end
|
110
133
|
end
|
111
134
|
end
|
data/lib/nexmo/client_error.rb
CHANGED
data/lib/nexmo/config.rb
CHANGED
@@ -1,23 +1,30 @@
|
|
1
|
+
# typed: true
|
1
2
|
# frozen_string_literal: true
|
2
3
|
require 'logger'
|
3
4
|
|
4
5
|
module Nexmo
|
5
6
|
class Config
|
7
|
+
extend T::Sig
|
8
|
+
|
9
|
+
sig { void }
|
6
10
|
def initialize
|
7
|
-
self.
|
8
|
-
self.
|
9
|
-
self.
|
10
|
-
self.
|
11
|
-
self.
|
11
|
+
self.api_host = 'api.nexmo.com'
|
12
|
+
self.api_key = T.let(ENV['NEXMO_API_KEY'], T.nilable(String))
|
13
|
+
self.api_secret = T.let(ENV['NEXMO_API_SECRET'], T.nilable(String))
|
14
|
+
self.application_id = ENV['NEXMO_APPLICATION_ID']
|
15
|
+
self.logger = (defined?(::Rails.logger) && ::Rails.logger) || Nexmo::Logger.new(nil)
|
16
|
+
self.private_key = ENV['NEXMO_PRIVATE_KEY_PATH'] ? File.read(T.must(ENV['NEXMO_PRIVATE_KEY_PATH'])) : ENV['NEXMO_PRIVATE_KEY']
|
17
|
+
self.rest_host = 'rest.nexmo.com'
|
12
18
|
self.signature_secret = ENV['NEXMO_SIGNATURE_SECRET']
|
13
19
|
self.signature_method = ENV['NEXMO_SIGNATURE_METHOD'] || 'md5hash'
|
14
|
-
self.token = nil
|
20
|
+
self.token = T.let(nil, T.nilable(String))
|
15
21
|
end
|
16
22
|
|
17
23
|
# Merges the config with the given options hash.
|
18
24
|
#
|
19
25
|
# @return [Nexmo::Config]
|
20
26
|
#
|
27
|
+
sig { params(options: T.nilable(T::Hash[Symbol, T.untyped])).returns(Nexmo::Config) }
|
21
28
|
def merge(options)
|
22
29
|
return self if options.nil? || options.empty?
|
23
30
|
|
@@ -26,13 +33,18 @@ module Nexmo
|
|
26
33
|
end
|
27
34
|
end
|
28
35
|
|
36
|
+
sig { returns(String) }
|
37
|
+
attr_accessor :api_host
|
38
|
+
|
29
39
|
# Returns the value of attribute api_key.
|
30
40
|
#
|
31
41
|
# @return [String]
|
32
42
|
#
|
33
43
|
# @raise [AuthenticationError]
|
34
44
|
#
|
45
|
+
sig { returns(T.nilable(String)) }
|
35
46
|
def api_key
|
47
|
+
@api_key = T.let(@api_key, T.nilable(String))
|
36
48
|
unless @api_key
|
37
49
|
raise AuthenticationError.new('No API key provided. ' \
|
38
50
|
'See https://developer.nexmo.com/concepts/guides/authentication for details, ' \
|
@@ -42,6 +54,7 @@ module Nexmo
|
|
42
54
|
@api_key
|
43
55
|
end
|
44
56
|
|
57
|
+
sig { params(api_key: T.nilable(String)).returns(T.nilable(String)) }
|
45
58
|
attr_writer :api_key
|
46
59
|
|
47
60
|
# Returns the value of attribute api_secret.
|
@@ -50,7 +63,9 @@ module Nexmo
|
|
50
63
|
#
|
51
64
|
# @raise [AuthenticationError]
|
52
65
|
#
|
66
|
+
sig { returns(T.nilable(String)) }
|
53
67
|
def api_secret
|
68
|
+
@api_secret = T.let(@api_secret, T.nilable(String))
|
54
69
|
unless @api_secret
|
55
70
|
raise AuthenticationError.new('No API secret provided. ' \
|
56
71
|
'See https://developer.nexmo.com/concepts/guides/authentication for details, ' \
|
@@ -60,6 +75,7 @@ module Nexmo
|
|
60
75
|
@api_secret
|
61
76
|
end
|
62
77
|
|
78
|
+
sig { params(api_secret: T.nilable(String)).returns(T.nilable(String)) }
|
63
79
|
attr_writer :api_secret
|
64
80
|
|
65
81
|
# Returns the value of attribute application_id.
|
@@ -68,7 +84,9 @@ module Nexmo
|
|
68
84
|
#
|
69
85
|
# @raise [AuthenticationError]
|
70
86
|
#
|
87
|
+
sig { returns(T.nilable(String)) }
|
71
88
|
def application_id
|
89
|
+
@application_id = T.let(@application_id, T.nilable(String))
|
72
90
|
unless @application_id
|
73
91
|
raise AuthenticationError.new('No application_id provided. ' \
|
74
92
|
'Either provide an application_id, or set an auth token. ' \
|
@@ -80,32 +98,40 @@ module Nexmo
|
|
80
98
|
@application_id
|
81
99
|
end
|
82
100
|
|
101
|
+
sig { params(application_id: T.nilable(String)).returns(T.nilable(String)) }
|
83
102
|
attr_writer :application_id
|
84
103
|
|
104
|
+
sig { returns(T.nilable(String)) }
|
85
105
|
attr_accessor :app_name
|
86
106
|
|
107
|
+
sig { returns(T.nilable(String)) }
|
87
108
|
attr_accessor :app_version
|
88
109
|
|
89
110
|
# Returns the value of attribute http.
|
90
111
|
#
|
91
112
|
# @return [Nexmo::HTTP::Options]
|
92
113
|
#
|
114
|
+
sig { returns(T.nilable(Nexmo::HTTP::Options)) }
|
93
115
|
attr_reader :http
|
94
116
|
|
117
|
+
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.nilable(Nexmo::HTTP::Options)) }
|
95
118
|
def http=(hash)
|
96
|
-
@http = HTTP::Options
|
119
|
+
@http = T.let(nil, T.nilable(Nexmo::HTTP::Options))
|
120
|
+
@http = Nexmo::HTTP::Options.new(hash)
|
97
121
|
end
|
98
122
|
|
99
123
|
# Returns the value of attribute logger.
|
100
124
|
#
|
101
125
|
# @return [Nexmo::Logger]
|
102
126
|
#
|
127
|
+
sig { returns(T.nilable(Nexmo::Logger)) }
|
103
128
|
attr_reader :logger
|
104
129
|
|
105
130
|
# @return [Nexmo::Logger]
|
106
131
|
#
|
132
|
+
sig { params(logger: T.nilable(T.any(::Logger, Nexmo::Logger))).returns(T.nilable(Nexmo::Logger)) }
|
107
133
|
def logger=(logger)
|
108
|
-
@logger = Logger.new(logger)
|
134
|
+
@logger = T.let(Logger.new(logger), T.nilable(Nexmo::Logger))
|
109
135
|
end
|
110
136
|
|
111
137
|
# Returns the value of attribute private_key.
|
@@ -114,7 +140,9 @@ module Nexmo
|
|
114
140
|
#
|
115
141
|
# @raise [AuthenticationError]
|
116
142
|
#
|
143
|
+
sig { returns(T.nilable(String)) }
|
117
144
|
def private_key
|
145
|
+
@private_key = T.let(@private_key, T.nilable(String))
|
118
146
|
unless @private_key
|
119
147
|
raise AuthenticationError.new('No private_key provided. ' \
|
120
148
|
'Either provide a private_key, or set an auth token. ' \
|
@@ -126,15 +154,21 @@ module Nexmo
|
|
126
154
|
@private_key
|
127
155
|
end
|
128
156
|
|
157
|
+
sig { params(private_key: T.nilable(String)).returns(T.nilable(String)) }
|
129
158
|
attr_writer :private_key
|
130
159
|
|
160
|
+
sig { returns(String) }
|
161
|
+
attr_accessor :rest_host
|
162
|
+
|
131
163
|
# Returns the value of attribute signature_secret.
|
132
164
|
#
|
133
165
|
# @return [String]
|
134
166
|
#
|
135
167
|
# @raise [AuthenticationError]
|
136
168
|
#
|
169
|
+
sig { returns(T.nilable(String)) }
|
137
170
|
def signature_secret
|
171
|
+
@signature_secret = T.let(@signature_secret, T.nilable(String))
|
138
172
|
unless @signature_secret
|
139
173
|
raise AuthenticationError.new('No signature_secret provided. ' \
|
140
174
|
'You can find your signature secret in the Nexmo dashboard. ' \
|
@@ -145,22 +179,28 @@ module Nexmo
|
|
145
179
|
@signature_secret
|
146
180
|
end
|
147
181
|
|
182
|
+
sig { params(signature_secret: T.nilable(String)).returns(T.nilable(String)) }
|
148
183
|
attr_writer :signature_secret
|
149
184
|
|
185
|
+
sig { returns(String) }
|
150
186
|
attr_accessor :signature_method
|
151
187
|
|
152
188
|
# Returns the value of attribute token, or a temporary short lived token.
|
153
189
|
#
|
154
190
|
# @return [String]
|
155
191
|
#
|
192
|
+
sig { returns(T.nilable(String)) }
|
156
193
|
def token
|
157
|
-
@token
|
194
|
+
@token = T.let(nil, T.nilable(String))
|
195
|
+
@token || JWT.generate({application_id: application_id}, T.must(private_key))
|
158
196
|
end
|
159
197
|
|
198
|
+
sig { params(token: T.nilable(String)).returns(T.nilable(String)) }
|
160
199
|
attr_writer :token
|
161
200
|
|
162
201
|
protected
|
163
202
|
|
203
|
+
sig { params(name: Symbol, value: T.nilable(T.untyped)).void }
|
164
204
|
def write_attribute(name, value)
|
165
205
|
public_send(:"#{name}=", value)
|
166
206
|
end
|