vonage 7.2.1 → 7.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc5bab327c1d3fb5c689bdd5c8958e3441332ad3e498da73bd1a82a67df6aaf9
4
- data.tar.gz: 9c9964bd8cfc08afd014ec8f9af1e4ba1f3c3a58b9c53b223c62e64a2f86bfa2
3
+ metadata.gz: 71e2807806583d50e0ce062ffaaafbcb69f1629e3ba010a6cedbcc22cfcc0741
4
+ data.tar.gz: da726714cefba39cd4e78f7356dbc566e4c7a61718b968281e1625c4787f5d84
5
5
  SHA512:
6
- metadata.gz: b6d915e490cbe3908dc5d62bfc3b2cf245611fcc5bbcd27b10a0c8af41fbc356f2322bd6c98c0fa46623e2a48dffef0ea1f5b831c059d9dd85380f0678eb03bf
7
- data.tar.gz: e2abd40a4876cb74772884aaddedfd73726282939a9f1ef361684ff67963155cbe79374571e01a022270060c91a185180e384cf82a74d1ea0fa17a2a1ee3646b
6
+ metadata.gz: 13e4ce32d69d4bdc899e7143137e926891423e4d838d3ede9d606481e4da5840c47d6c4c4368ee428e1df6264ab36980cecfd485fbf4aa5b183cc340f4b05d72
7
+ data.tar.gz: 711085663db7d880b0b5fe7d1acee074c08052a13fef61982df704681c6b2482178126ff9b0d3d868514e5b18ef61a7a39259be7095db362699f0778aa0a9918
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Vonage Server SDK for Ruby
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/vonage.svg)](https://badge.fury.io/rb/vonage) [![Coverage Status](https://github.com/Vonage/vonage-ruby-sdk/workflows/CI/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/Vonage/vonage-ruby-sdk/badge.svg?branch=master)](https://coveralls.io/github/Vonage/vonage-ruby-sdk?branch=master)
3
+ [![Gem Version](https://badge.fury.io/rb/vonage.svg)](https://badge.fury.io/rb/vonage) ![Coverage Status](https://github.com/Vonage/vonage-ruby-sdk/workflows/CI/badge.svg) [![codecov](https://codecov.io/gh/Vonage/vonage-ruby-sdk/branch/master/graph/badge.svg)](https://codecov.io/gh/vonage/vonage-ruby-sdk)
4
+
4
5
 
5
6
  <img src="https://developer.nexmo.com/assets/images/Vonage_Nexmo.svg" height="48px" alt="Nexmo is now known as Vonage" />
6
7
 
@@ -14,6 +15,7 @@ need a Vonage account. Sign up [for free at vonage.com][signup].
14
15
  * [Overriding the default hosts](#overriding-the-default-hosts)
15
16
  * [JWT authentication](#jwt-authentication)
16
17
  * [Webhook signatures](#webhook-signatures)
18
+ * [Pagination](#pagination)
17
19
  * [Documentation](#documentation)
18
20
  * [Frequently Asked Questions](#frequently-asked-questions)
19
21
  * [Supported APIs](#supported-apis)
@@ -148,6 +150,22 @@ Alternatively you can set the `VONAGE_SIGNATURE_SECRET` environment variable.
148
150
 
149
151
  Note: you'll need to contact support@nexmo.com to enable message signing on your account.
150
152
 
153
+ ## Pagination
154
+
155
+ Vonage APIs paginate list requests. This means that if a collection is requested that is larger than the API default, the API will return the first page of items in the collection. The Ruby SDK provides an `auto_advance` parameter that will traverse through the pages and return all the results in one response object.
156
+
157
+ The `auto_advance` parameter is set to a default of `true` for the following APIs:
158
+
159
+ * [Account API](https://developer.nexmo.com/api/developer/account)
160
+ * [Application API](https://developer.nexmo.com/api/application.v2)
161
+ * [Conversation API](https://developer.nexmo.com/api/conversation)
162
+ * [Voice API](https://developer.nexmo.com/api/voice)
163
+
164
+ To modify the `auto_advance` behavior you can specify it in your method:
165
+
166
+ ```ruby
167
+ client.applications.list(auto_advance: false)
168
+ ```
151
169
 
152
170
  ## Documentation
153
171
 
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  module Vonage
4
4
  class AbstractAuthentication
@@ -69,14 +69,22 @@ module Vonage
69
69
  # @option params [Integer] :page
70
70
  # The current page number (starts at 1).
71
71
  #
72
+ # @option params [Boolean] :auto_advance
73
+ # Set this to `false` to not auto-advance through all the pages in the record
74
+ # and collect all the data. The default is `true`.
72
75
  # @param [Hash] params
73
- #
76
+ #
74
77
  # @return [ListResponse]
75
78
  #
76
79
  # @see https://developer.nexmo.com/api/application.v2#listApplication
77
80
  #
78
- sig { params(params: T.nilable(T::Hash[Symbol, Integer])).returns(Vonage::Response) }
79
- def list(params = nil)
81
+ sig { params(
82
+ params: T.nilable(T::Hash[Symbol, Integer]), auto_advance: T::Boolean).returns(Vonage::Applications::ListResponse) }
83
+ def list(params = nil, auto_advance = true)
84
+ if params && !params.key?(:auto_advance)
85
+ params.merge!(auto_advance: true)
86
+ end
87
+
80
88
  request('/v2/applications', params: params, response_class: ListResponse)
81
89
  end
82
90
 
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  class Vonage::Applications::ListResponse < Vonage::Response
4
4
  include Enumerable
data/lib/vonage/basic.rb CHANGED
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  module Vonage
4
4
  class Basic < AbstractAuthentication
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Vonage
@@ -60,14 +60,21 @@ module Vonage
60
60
  # @option params ['asc', 'desc'] :order
61
61
  # Return the records in ascending or descending order.
62
62
  #
63
+ # @option params [Boolean] :auto_advance
64
+ # Set this to `false` to not auto-advance through all the pages in the record
65
+ # and collect all the data. The default is `true`.
63
66
  # @param [Hash, nil] params
64
- #
67
+ #
65
68
  # @return [Response]
66
69
  #
67
70
  # @see https://developer.nexmo.com/api/conversation#replaceConversation
68
71
  #
69
- sig { params(params: T.nilable(T::Hash[Symbol, T.untyped])).returns(Vonage::Response) }
70
- def list(params = nil)
72
+ sig { params(params: T.nilable(T::Hash[Symbol, T.untyped]), auto_advance: T::Boolean).returns(Vonage::Response) }
73
+ def list(params = nil, auto_advance = true)
74
+ if params && !params.key?(:auto_advance)
75
+ params.merge!(auto_advance: true)
76
+ end
77
+
71
78
  request('/beta/conversations', params: params)
72
79
  end
73
80
 
@@ -36,12 +36,16 @@ module Vonage
36
36
  #
37
37
  # @param [String] conversation_id
38
38
  #
39
+ # @option params [Boolean] :auto_advance
40
+ # Set this to `false` to not auto-advance through all the pages in the record
41
+ # and collect all the data. The default is `true`.
42
+ #
39
43
  # @return [Response]
40
44
  #
41
45
  # @see https://developer.nexmo.com/api/conversation#getEvents
42
46
  #
43
- def list(conversation_id)
44
- request('/beta/conversations/' + conversation_id + '/events')
47
+ def list(conversation_id, params = nil, auto_advance = true)
48
+ request('/beta/conversations/' + conversation_id + '/events', params: params)
45
49
  end
46
50
 
47
51
  # Retrieve an event.
@@ -7,12 +7,16 @@ module Vonage
7
7
 
8
8
  # List legs.
9
9
  #
10
+ # @option params [Boolean] :auto_advance
11
+ # Set this to `false` to not auto-advance through all the pages in the record
12
+ # and collect all the data. The default is `true`.
13
+ #
10
14
  # @return [Response]
11
15
  #
12
16
  # @see https://developer.nexmo.com/api/conversation#listLegs
13
17
  #
14
- def list
15
- request('/beta/legs')
18
+ def list(params = nil, auto_advance = true)
19
+ request('/beta/legs', params: params)
16
20
  end
17
21
 
18
22
  # Delete a leg.
@@ -47,12 +47,16 @@ module Vonage
47
47
  #
48
48
  # @param [String] conversation_id
49
49
  #
50
+ # @option params [Boolean] :auto_advance
51
+ # Set this to `false` to not auto-advance through all the pages in the record
52
+ # and collect all the data. The default is `true`.
53
+ #
50
54
  # @return [Response]
51
55
  #
52
56
  # @see https://developer.nexmo.com/api/conversation#getMembers
53
57
  #
54
- def list(conversation_id)
55
- request('/beta/conversations/' + conversation_id + '/members')
58
+ def list(conversation_id, params = nil, auto_advance = true)
59
+ request('/beta/conversations/' + conversation_id + '/members', params: params)
56
60
  end
57
61
 
58
62
  # Retrieve a member.
@@ -31,12 +31,16 @@ module Vonage
31
31
 
32
32
  # List users.
33
33
  #
34
+ # @option params [Boolean] :auto_advance
35
+ # Set this to `false` to not auto-advance through all the pages in the record
36
+ # and collect all the data. The default is `true`.
37
+ #
34
38
  # @return [Response]
35
39
  #
36
40
  # @see https://developer.nexmo.com/api/conversation#getUsers
37
41
  #
38
- def list
39
- request('/beta/users')
42
+ def list(params = nil, auto_advance = true)
43
+ request('/beta/users', params: params)
40
44
  end
41
45
 
42
46
  # Retrieve a user.
data/lib/vonage/entity.rb CHANGED
@@ -36,8 +36,6 @@ module Vonage
36
36
 
37
37
  attr_reader :attributes
38
38
 
39
- protected :attributes
40
-
41
39
  def each_pair(&block)
42
40
  return to_enum(:each_pair) unless block
43
41
 
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  module Vonage
4
4
  module FormData
data/lib/vonage/gsm7.rb CHANGED
@@ -1,11 +1,14 @@
1
- # typed: ignore
1
+ # typed: strong
2
2
 
3
3
  module Vonage
4
4
  module GSM7
5
+ extend T::Sig
6
+
5
7
  CHARACTERS = "\n\f\r !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ ¡£¤¥§¿ÄÅÆÉÑÖØÜßàäåæçèéìñòöøùüΓΔΘΛΞΠΣΦΨΩ€"
6
8
 
7
9
  REGEXP = /\A[#{Regexp.escape(CHARACTERS)}]*\z/
8
10
 
11
+ sig { params(string: T.nilable(String)).returns(T.nilable(Integer)) }
9
12
  def self.encoded?(string)
10
13
  REGEXP =~ string
11
14
  end
data/lib/vonage/json.rb CHANGED
@@ -6,7 +6,7 @@ module Vonage
6
6
  module JSON
7
7
  extend T::Sig
8
8
 
9
- sig { params(http_request: T.any(Net::HTTP::Put, Net::HTTP::Post), params: T::Hash[Symbol, T.untyped]).void }
9
+ sig { params(http_request: T.any(Net::HTTP::Put, Net::HTTP::Post, Net::HTTP::Get), params: T::Hash[Symbol, T.untyped]).void }
10
10
  def self.update(http_request, params)
11
11
  http_request['Content-Type'] = 'application/json'
12
12
  http_request.body = ::JSON.generate(params)
data/lib/vonage/jwt.rb CHANGED
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: true
2
2
  # frozen_string_literal: true
3
3
  require 'securerandom'
4
4
  require 'openssl'
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
  # frozen_string_literal: true
3
3
  require 'net/http'
4
4
  require 'json'
@@ -47,41 +47,47 @@ module Vonage
47
47
  end
48
48
 
49
49
  protected
50
+ # :nocov:
50
51
 
51
52
  Get = Net::HTTP::Get
52
53
  Put = Net::HTTP::Put
53
54
  Post = Net::HTTP::Post
54
55
  Delete = Net::HTTP::Delete
55
56
 
56
- def request(path, params: nil, type: Get, response_class: Response, &block)
57
- uri = URI('https://' + @host + path)
58
-
59
- params ||= {}
60
-
57
+ def build_request(path:, type: Get, params: {})
61
58
  authentication = self.class.authentication.new(@config)
62
59
  authentication.update(params)
63
60
 
64
- unless type::REQUEST_HAS_BODY || params.empty?
61
+ uri = URI('https://' + @host + path)
62
+ unless type.const_get(:REQUEST_HAS_BODY) || params.empty?
65
63
  uri.query = Params.encode(params)
66
64
  end
67
65
 
66
+ # Set BasicAuth if neeeded
68
67
  authentication.update(uri)
69
68
 
70
- message = type.new(uri)
71
-
72
- message['User-Agent'] = UserAgent.string(@config.app_name, @config.app_version)
69
+ # instantiate request
70
+ request = type.new(uri)
73
71
 
72
+ # set headers
73
+ request['User-Agent'] = UserAgent.string(@config.app_name, @config.app_version)
74
74
  self.class.request_headers.each do |key, value|
75
- message[key] = value
75
+ request[key] = value
76
76
  end
77
77
 
78
- authentication.update(message)
78
+ # Set BearerToken if needed
79
+ authentication.update(request)
80
+
81
+ # set body
82
+ self.class.request_body.update(request, params) if type.const_get(:REQUEST_HAS_BODY)
79
83
 
80
- self.class.request_body.update(message, params) if type::REQUEST_HAS_BODY
84
+ request
85
+ end
81
86
 
82
- logger.log_request_info(message)
87
+ def make_request!(request, &block)
88
+ logger.log_request_info(request)
83
89
 
84
- response = @http.request(message, &block)
90
+ response = @http.request(request, &block)
85
91
 
86
92
  logger.log_response_info(response, @host)
87
93
 
@@ -89,7 +95,105 @@ module Vonage
89
95
 
90
96
  logger.debug(response.body) if response.body
91
97
 
92
- parse(response, response_class)
98
+ response
99
+ end
100
+
101
+ def request(path, params: nil, type: Get, response_class: Response, &block)
102
+ auto_advance = !params.nil? && params.key?(:auto_advance) ? params[:auto_advance] : false
103
+
104
+ params = params.tap { |params| params.delete(:auto_advance) } if !params.nil? && params.key?(:auto_advance)
105
+
106
+ request = build_request(path: path, params: params || {}, type: type)
107
+
108
+ response = make_request!(request, &block)
109
+
110
+ if auto_advance
111
+ iterable_request(path, response: response, response_class: response_class, &block)
112
+ else
113
+ return if block
114
+
115
+ parse(response, response_class)
116
+ end
117
+ end
118
+
119
+ def iterable_request(path, response: nil, response_class: nil, &block)
120
+ json_response = ::JSON.parse(response.body)
121
+ response = parse(response, response_class)
122
+ remainder = remaining_count(json_response)
123
+
124
+ while remainder > 0
125
+ params = { page_size: json_response['page_size'] }
126
+
127
+ if json_response['record_index'] && json_response['record_index'] == 0
128
+ params[:record_index] = json_response['page_size']
129
+ elsif json_response['record_index'] && json_response['record_index'] != 0
130
+ params[:record_index] = (json_response['record_index'] + json_response['page_size'])
131
+ end
132
+
133
+ if json_response['total_pages']
134
+ params[:page] = json_response['page'] + 1
135
+ end
136
+
137
+ request = build_request(path: path, type: Get, params: params)
138
+
139
+ # Make request...
140
+ paginated_response = make_request!(request)
141
+ next_response = parse(paginated_response, response_class)
142
+ json_response = ::JSON.parse(paginated_response.body)
143
+ remainder = remaining_count(json_response)
144
+
145
+ if response.respond_to?('_embedded')
146
+ collection_name = collection_name(response['_embedded'])
147
+ response['_embedded'][collection_name].push(*next_response['_embedded'][collection_name])
148
+ else
149
+ response[collection_name(response)].push(*next_response[collection_name(next_response)])
150
+ end
151
+ end
152
+
153
+ response
154
+ end
155
+
156
+ def remaining_count(params)
157
+ if params.key?('total_pages')
158
+ params['total_pages'] - params['page']
159
+ elsif params.key?('count')
160
+ params['count'] - (params['record_index'] == 0 ? params['page_size'] : (params['record_index'] + params['page_size']))
161
+ else
162
+ 0
163
+ end
164
+ end
165
+
166
+ def collection_name(params)
167
+ @collection_name ||= case
168
+ when params.respond_to?('calls')
169
+ 'calls'
170
+ when params.respond_to?('users')
171
+ 'users'
172
+ when params.respond_to?('legs')
173
+ 'legs'
174
+ when params.respond_to?('data')
175
+ 'data'
176
+ when params.respond_to?('conversations')
177
+ 'conversations'
178
+ when params.respond_to?('applications')
179
+ 'applications'
180
+ when params.respond_to?('records')
181
+ 'records'
182
+ when params.respond_to?('reports')
183
+ 'reports'
184
+ when params.respond_to?('networks')
185
+ 'networks'
186
+ when params.respond_to?('countries')
187
+ 'countries'
188
+ when params.respond_to?('media')
189
+ 'media'
190
+ when params.respond_to?('numbers')
191
+ 'numbers'
192
+ when params.respond_to?('events')
193
+ 'events'
194
+ else
195
+ params.entity.attributes.keys[0].to_s
196
+ end
93
197
  end
94
198
 
95
199
  def parse(response, response_class)
@@ -115,4 +219,5 @@ module Vonage
115
219
  end
116
220
 
117
221
  private_constant :Namespace
222
+ # :nocov:
118
223
  end
@@ -40,7 +40,11 @@ module Vonage
40
40
  #
41
41
  # @option params [Integer] :index
42
42
  # Page index.
43
- #
43
+ #
44
+ # @option params [Boolean] :auto_advance
45
+ # Set this to `true` to auto-advance through all the pages in the record
46
+ # and collect all the data. The default is `false`.
47
+ #
44
48
  # @param [Hash] params
45
49
  #
46
50
  # @return [ListResponse]
@@ -85,6 +89,10 @@ module Vonage
85
89
  # @option params [Integer] :index
86
90
  # Page index.
87
91
  #
92
+ # @option params [Boolean] :auto_advance
93
+ # Set this to `true` to auto-advance through all the pages in the record
94
+ # and collect all the data. The default is `false`.
95
+ #
88
96
  # @param [Hash] params
89
97
  #
90
98
  # @return [ListResponse]
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  class Vonage::Numbers::ListResponse < Vonage::Response
4
4
  include Enumerable
@@ -1,8 +1,8 @@
1
- # typed: false
1
+ # typed: true
2
2
  # frozen_string_literal: true
3
3
 
4
4
  class Vonage::Numbers::Response < Vonage::Response
5
5
  def success?
6
- error_code == '200'
6
+ T.unsafe(self).error_code == '200'
7
7
  end
8
8
  end
data/lib/vonage/params.rb CHANGED
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
  # frozen_string_literal: true
3
3
  require 'cgi'
4
4
 
@@ -9,6 +9,7 @@ module Vonage
9
9
  end
10
10
 
11
11
  attr_reader :http_response
12
+ attr_reader :entity
12
13
 
13
14
  def respond_to_missing?(name, include_private = false)
14
15
  return super if @entity.nil?
@@ -38,12 +38,16 @@ module Vonage
38
38
  # puts "#{item.created_at} #{item.id}"
39
39
  # end
40
40
  #
41
+ # @option params [Boolean] :auto_advance
42
+ # Set this to `false` to not auto-advance through all the pages in the record
43
+ # and collect all the data. The default is `true`.
44
+ #
41
45
  # @return [ListResponse]
42
46
  #
43
47
  # @see https://developer.nexmo.com/api/account#retrieveAPISecrets
44
48
  #
45
- def list
46
- request('/accounts/' + account_id + '/secrets', response_class: ListResponse)
49
+ def list(params = nil, auto_advance = true)
50
+ request('/accounts/' + account_id + '/secrets', params: params, response_class: ListResponse)
47
51
  end
48
52
 
49
53
  # Retrieve one API Secret.
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  class Vonage::Secrets::ListResponse < Vonage::Response
4
4
  include Enumerable
@@ -1,8 +1,11 @@
1
- # typed: ignore
1
+ # typed: strong
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Vonage
5
5
  module UserAgent
6
+ extend T::Sig
7
+
8
+ sig { params(app_name: T.nilable(String), app_version: T.nilable(String)).returns(String) }
6
9
  def self.string(app_name, app_version)
7
10
  identifiers = []
8
11
  identifiers << 'vonage-ruby/' + VERSION
data/lib/vonage/verify.rb CHANGED
@@ -42,7 +42,7 @@ module Vonage
42
42
  # Use this parameter to explicitly control the language, accent and gender used for the Verify request.
43
43
  #
44
44
  # @option params [Integer] :pin_expiry
45
- # How log the generated verification code is valid for, in seconds.
45
+ # How long the generated verification code is valid for, in seconds.
46
46
  # When you specify both **:pin_expiry** and **:next_event_wait** then **:pin_expiry** must be an integer multiple of **:next_event_wait** otherwise **:pin_expiry** is defaulted to equal **:next_event_wait**.
47
47
  # See [changing the event timings](https://developer.nexmo.com/verify/guides/changing-default-timings).
48
48
  #
@@ -1,5 +1,5 @@
1
1
  # typed: strong
2
2
 
3
3
  module Vonage
4
- VERSION = '7.2.1'
4
+ VERSION = '7.3.0'
5
5
  end
data/lib/vonage/voice.rb CHANGED
@@ -87,13 +87,21 @@ module Vonage
87
87
  # @option params [String] :conversation_uuid
88
88
  # Return all the records associated with a specific conversation.
89
89
  #
90
+ # @option params [Boolean] :auto_advance
91
+ # Set this to `false` to not auto-advance through all the pages in the record
92
+ # and collect all the data. The default is `true`.
93
+ #
90
94
  # @param [Hash] params
91
95
  #
92
96
  # @return [ListResponse]
93
97
  #
94
98
  # @see https://developer.nexmo.com/api/voice#getCalls
95
99
  #
96
- def list(params = nil)
100
+ def list(params = nil, auto_advance = true)
101
+ if params && !params.key?(:auto_advance)
102
+ params.merge!(auto_advance: true)
103
+ end
104
+
97
105
  request('/v1/calls', params: params, response_class: ListResponse)
98
106
  end
99
107
 
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  class Vonage::Voice::ListResponse < Vonage::Response
4
4
  include Enumerable
data/vonage.gemspec CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.add_dependency('nexmo-jwt', '~> 0.1.2')
16
16
  s.add_dependency('zeitwerk', '~> 2', '>= 2.2')
17
17
  s.add_dependency('sorbet-runtime', '~> 0.5')
18
+ s.add_runtime_dependency('rexml')
18
19
  s.require_path = 'lib'
19
20
  s.metadata = {
20
21
  'homepage' => 'https://github.com/Vonage/vonage-ruby-sdk',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vonage
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.1
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vonage
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-14 00:00:00.000000000 Z
11
+ date: 2021-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nexmo-jwt
@@ -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: rexml
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
61
75
  description: Vonage Server SDK for Ruby
62
76
  email:
63
77
  - devrel@vonage.com
@@ -147,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
161
  - !ruby/object:Gem::Version
148
162
  version: '0'
149
163
  requirements: []
150
- rubygems_version: 3.0.0
164
+ rubygems_version: 3.1.4
151
165
  signing_key:
152
166
  specification_version: 4
153
167
  summary: This is the Ruby Server SDK for Vonage APIs. To use it you'll need a Vonage