nexmo 7.1.2 → 7.2.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.
- checksums.yaml +4 -4
- data/README.md +7 -6
- data/lib/nexmo/jwt.rb +12 -16
- data/lib/nexmo/keys.rb +18 -2
- data/lib/nexmo/redact.rb +4 -1
- data/lib/nexmo/version.rb +1 -1
- data/nexmo.gemspec +2 -1
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad124eb0e0e93884dc48ed8257b977c2cc365b19668326751d0fa9c0dd843696
|
4
|
+
data.tar.gz: a7e1dae46b7e4c9d86b49fa51f6e74679ec1df56d55961e81e1a8d12b1831f29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4de53e3319290efe704e16603a09aa79af15cc47aaf75f539e1e442b040d6e86f7427e6a412702c0557cd1d43c1ee8b31b38e71646ac615766277ed63caa590c
|
7
|
+
data.tar.gz: 57c846af9f53f5537a6aeda3d588e36c6ef41c273f18640fe2214e37428ecd8d5ba7cfe91b619fc5035c43b0847a9507d97b9b036aa3fc1d6bb6b67bf975601f
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Nexmo Client Library for Ruby
|
2
2
|
|
3
|
-
[](https://badge.fury.io/rb/nexmo) [](https://badge.fury.io/rb/nexmo) [ [](https://coveralls.io/github/Nexmo/nexmo-ruby?branch=master)
|
4
4
|
|
5
5
|
<img src="https://developer.nexmo.com/assets/images/Vonage_Nexmo.svg" height="48px" alt="Nexmo is now known as Vonage" />
|
6
6
|
|
@@ -112,18 +112,19 @@ the token option. For example:
|
|
112
112
|
```ruby
|
113
113
|
claims = {
|
114
114
|
application_id: application_id,
|
115
|
+
private_key: 'path/to/private.key',
|
115
116
|
nbf: 1483315200,
|
116
|
-
|
117
|
-
iat: 1483228800
|
117
|
+
ttl: 800
|
118
118
|
}
|
119
119
|
|
120
|
-
|
121
|
-
|
122
|
-
token = Nexmo::JWT.generate(claims, private_key)
|
120
|
+
token = Nexmo::JWT.generate(claims)
|
123
121
|
|
124
122
|
client = Nexmo::Client.new(token: token)
|
125
123
|
````
|
126
124
|
|
125
|
+
Documentation for the Nexmo Ruby JWT generator gem can be found at
|
126
|
+
[https://www.rubydoc.info/github/nexmo/nexmo-jwt-ruby](https://www.rubydoc.info/github/nexmo/nexmo-jwt-ruby).
|
127
|
+
The documentation outlines all the possible parameters you can use to customize and build a token with.
|
127
128
|
|
128
129
|
## Webhook signatures
|
129
130
|
|
data/lib/nexmo/jwt.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: false
|
2
2
|
# frozen_string_literal: true
|
3
3
|
require 'securerandom'
|
4
4
|
require 'openssl'
|
5
|
-
require 'jwt'
|
5
|
+
require 'nexmo-jwt'
|
6
6
|
|
7
7
|
module Nexmo
|
8
|
-
|
9
|
-
extend T::Sig
|
10
|
-
|
8
|
+
class JWT
|
11
9
|
# Generate an encoded JSON Web Token.
|
12
10
|
#
|
13
11
|
# By default the Nexmo Ruby SDK generates a short lived JWT per request.
|
@@ -16,12 +14,14 @@ module Nexmo
|
|
16
14
|
# directly call {Nexmo::JWT.generate} to generate a token, and set the token
|
17
15
|
# attribute on the client object.
|
18
16
|
#
|
17
|
+
# Documentation for the Nexmo Ruby JWT generator gem can be found at
|
18
|
+
# https://www.rubydoc.info/github/nexmo/nexmo-jwt-ruby
|
19
|
+
#
|
19
20
|
# @example
|
20
21
|
# claims = {
|
21
22
|
# application_id: application_id,
|
22
|
-
#
|
23
|
-
#
|
24
|
-
# iat: 1483228800
|
23
|
+
# ttl: 800,
|
24
|
+
# subject: 'My_Subject'
|
25
25
|
# }
|
26
26
|
#
|
27
27
|
# private_key = File.read('path/to/private.key')
|
@@ -33,15 +33,11 @@ module Nexmo
|
|
33
33
|
#
|
34
34
|
# @return [String]
|
35
35
|
#
|
36
|
-
|
37
|
-
|
38
|
-
payload[:iat] = iat = Time.now.to_i unless payload.key?(:iat) || payload.key?('iat')
|
39
|
-
payload[:exp] = T.must(iat) + 60 unless payload.key?(:exp) || payload.key?('exp')
|
40
|
-
payload[:jti] = SecureRandom.uuid unless payload.key?(:jti) || payload.key?('jti')
|
41
|
-
|
42
|
-
private_key = OpenSSL::PKey::RSA.new(private_key) unless private_key.respond_to?(:sign)
|
36
|
+
def self.generate(payload, private_key = nil)
|
37
|
+
raise "Expecting 'private_key' in either the payload or as a separate parameter" if !payload[:private_key] && !private_key
|
43
38
|
|
44
|
-
|
39
|
+
payload[:private_key] = private_key if private_key && !payload[:private_key]
|
40
|
+
@token = Nexmo::JWTBuilder.new(payload).jwt.generate
|
45
41
|
end
|
46
42
|
end
|
47
43
|
end
|
data/lib/nexmo/keys.rb
CHANGED
@@ -10,9 +10,25 @@ module Nexmo
|
|
10
10
|
hash.transform_keys { |k| k.to_s.tr('_', '-') }
|
11
11
|
end
|
12
12
|
|
13
|
-
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T::Hash[
|
13
|
+
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T::Hash[T.untyped, T.untyped]) }
|
14
14
|
def camelcase(hash)
|
15
|
-
|
15
|
+
exceptions = [
|
16
|
+
'dr_call_back_url',
|
17
|
+
'mo_http_url',
|
18
|
+
'mo_smpp_sys_type',
|
19
|
+
'mo_call_back_url',
|
20
|
+
'voice_callback_type',
|
21
|
+
'voice_callback_value',
|
22
|
+
'voice_status_callback',
|
23
|
+
'messages_callback_value',
|
24
|
+
'messages_callback_type'
|
25
|
+
]
|
26
|
+
hash.transform_keys do |k|
|
27
|
+
if exceptions.include?(k.to_s)
|
28
|
+
next k.to_s.gsub(/_(\w)/) { $1.upcase.to_s }
|
29
|
+
end
|
30
|
+
k
|
31
|
+
end
|
16
32
|
end
|
17
33
|
|
18
34
|
ATTRIBUTE_KEYS = T.let(Hash.new { |h, k| h[k] = k.split(PATTERN).join('_').downcase.to_sym }, T::Hash[T.untyped, T.untyped])
|
data/lib/nexmo/redact.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: strict
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
module Nexmo
|
5
5
|
class Redact < Namespace
|
6
|
+
extend T::Sig
|
7
|
+
|
6
8
|
self.authentication = Basic
|
7
9
|
|
8
10
|
self.request_body = JSON
|
@@ -27,6 +29,7 @@ module Nexmo
|
|
27
29
|
#
|
28
30
|
# @see https://developer.nexmo.com/api/redact#redact-message
|
29
31
|
#
|
32
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(Nexmo::Response) }
|
30
33
|
def transaction(params)
|
31
34
|
request('/v1/redact/transaction', params: params, type: Post)
|
32
35
|
end
|
data/lib/nexmo/version.rb
CHANGED
data/nexmo.gemspec
CHANGED
@@ -12,9 +12,10 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.summary = 'This is the Ruby client library for Nexmo\'s API. To use it you\'ll need a Nexmo account. Sign up for free at https://www.nexmo.com'
|
13
13
|
s.files = Dir.glob('lib/**/*.rb') + %w(LICENSE.txt README.md nexmo.gemspec)
|
14
14
|
s.required_ruby_version = '>= 2.5.0'
|
15
|
-
s.add_dependency('jwt', '~>
|
15
|
+
s.add_dependency('nexmo-jwt', '~> 0.1.1')
|
16
16
|
s.add_dependency('zeitwerk', '~> 2', '>= 2.2')
|
17
17
|
s.add_dependency('sorbet-runtime', '~> 0.5')
|
18
|
+
s.add_development_dependency('timecop', '~> 0.9')
|
18
19
|
s.require_path = 'lib'
|
19
20
|
s.metadata = {
|
20
21
|
'homepage' => 'https://github.com/Nexmo/nexmo-ruby',
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nexmo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nexmo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: jwt
|
14
|
+
name: nexmo-jwt
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.1.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.1.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: zeitwerk
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,6 +58,20 @@ dependencies:
|
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '0.5'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: timecop
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0.9'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0.9'
|
61
75
|
description: Nexmo Client Library for Ruby
|
62
76
|
email:
|
63
77
|
- devrel@nexmo.com
|