vonage 7.20.0 → 8.0.0.beta

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +87 -386
  3. data/lib/vonage/applications.rb +4 -12
  4. data/lib/vonage/client.rb +0 -42
  5. data/lib/vonage/client_error.rb +1 -1
  6. data/lib/vonage/config.rb +1 -9
  7. data/lib/vonage/errors.rb +20 -37
  8. data/lib/vonage/gsm7.rb +1 -1
  9. data/lib/vonage/jwt.rb +0 -17
  10. data/lib/vonage/keys.rb +0 -2
  11. data/lib/vonage/logger.rb +3 -5
  12. data/lib/vonage/messaging/channels/viber.rb +1 -8
  13. data/lib/vonage/messaging/channels/whats_app.rb +1 -3
  14. data/lib/vonage/messaging.rb +0 -11
  15. data/lib/vonage/namespace.rb +57 -128
  16. data/lib/vonage/numbers.rb +6 -29
  17. data/lib/vonage/server_error.rb +1 -1
  18. data/lib/vonage/signature.rb +5 -5
  19. data/lib/vonage/sms.rb +20 -20
  20. data/lib/vonage/version.rb +1 -1
  21. data/lib/vonage/video/archives.rb +53 -18
  22. data/lib/vonage/video/list_response.rb +11 -0
  23. data/lib/vonage/video/moderation.rb +22 -7
  24. data/lib/vonage/video/signals.rb +9 -4
  25. data/lib/vonage/video/streams.rb +12 -6
  26. data/lib/vonage/video.rb +13 -31
  27. data/lib/vonage/voice/actions/connect.rb +3 -27
  28. data/lib/vonage/voice/actions/conversation.rb +2 -2
  29. data/lib/vonage/voice/actions/pay.rb +107 -0
  30. data/lib/vonage/voice/actions/talk.rb +2 -11
  31. data/lib/vonage/voice/talk.rb +1 -11
  32. data/lib/vonage/voice.rb +0 -22
  33. data/lib/vonage.rb +0 -2
  34. data/vonage.gemspec +1 -2
  35. metadata +9 -65
  36. data/lib/vonage/api_error.rb +0 -33
  37. data/lib/vonage/meetings/applications.rb +0 -25
  38. data/lib/vonage/meetings/dial_in_numbers/list_response.rb +0 -11
  39. data/lib/vonage/meetings/dial_in_numbers.rb +0 -23
  40. data/lib/vonage/meetings/recordings.rb +0 -36
  41. data/lib/vonage/meetings/rooms/list_response.rb +0 -11
  42. data/lib/vonage/meetings/rooms.rb +0 -155
  43. data/lib/vonage/meetings/sessions/list_response.rb +0 -11
  44. data/lib/vonage/meetings/sessions.rb +0 -28
  45. data/lib/vonage/meetings/themes/list_response.rb +0 -11
  46. data/lib/vonage/meetings/themes.rb +0 -218
  47. data/lib/vonage/meetings.rb +0 -38
  48. data/lib/vonage/number_insight_2.rb +0 -36
  49. data/lib/vonage/proactive_connect/events/list_response.rb +0 -11
  50. data/lib/vonage/proactive_connect/events.rb +0 -68
  51. data/lib/vonage/proactive_connect/item.rb +0 -104
  52. data/lib/vonage/proactive_connect/items/file_response.rb +0 -32
  53. data/lib/vonage/proactive_connect/items/list_response.rb +0 -11
  54. data/lib/vonage/proactive_connect/items.rb +0 -107
  55. data/lib/vonage/proactive_connect/list.rb +0 -168
  56. data/lib/vonage/proactive_connect/lists/list_response.rb +0 -11
  57. data/lib/vonage/proactive_connect/lists.rb +0 -35
  58. data/lib/vonage/proactive_connect.rb +0 -33
  59. data/lib/vonage/subaccounts/balance_transfers/list_response.rb +0 -11
  60. data/lib/vonage/subaccounts/credit_transfers/list_response.rb +0 -11
  61. data/lib/vonage/subaccounts/list_response.rb +0 -15
  62. data/lib/vonage/subaccounts.rb +0 -203
  63. data/lib/vonage/users/list_response.rb +0 -11
  64. data/lib/vonage/users.rb +0 -156
  65. data/lib/vonage/verify2/channels/email.rb +0 -36
  66. data/lib/vonage/verify2/channels/silent_auth.rb +0 -45
  67. data/lib/vonage/verify2/channels/sms.rb +0 -53
  68. data/lib/vonage/verify2/channels/voice.rb +0 -32
  69. data/lib/vonage/verify2/channels/whats_app.rb +0 -38
  70. data/lib/vonage/verify2/channels/whats_app_interactive.rb +0 -32
  71. data/lib/vonage/verify2/start_verification_options.rb +0 -62
  72. data/lib/vonage/verify2/workflow.rb +0 -39
  73. data/lib/vonage/verify2/workflow_builder.rb +0 -25
  74. data/lib/vonage/verify2.rb +0 -93
  75. data/lib/vonage/video/archives/list_response.rb +0 -11
  76. data/lib/vonage/video/broadcasts/list_response.rb +0 -11
  77. data/lib/vonage/video/broadcasts.rb +0 -75
  78. data/lib/vonage/video/sip.rb +0 -48
  79. data/lib/vonage/video/streams/list_response.rb +0 -11
data/lib/vonage/client.rb CHANGED
@@ -61,13 +61,6 @@ module Vonage
61
61
  @files ||= T.let(Files.new(config), T.nilable(Vonage::Files))
62
62
  end
63
63
 
64
- # @return [Meetings]
65
- #
66
- sig { returns(T.nilable(Vonage::Meetings)) }
67
- def meetings
68
- @meetings ||= T.let(Meetings.new(config), T.nilable(Vonage::Meetings))
69
- end
70
-
71
64
  # @return [Messages]
72
65
  #
73
66
  sig { returns(T.nilable(Vonage::Messages)) }
@@ -89,13 +82,6 @@ module Vonage
89
82
  @number_insight ||= T.let(NumberInsight.new(config), T.nilable(Vonage::NumberInsight))
90
83
  end
91
84
 
92
- # @return [NumberInsight2]
93
- #
94
- sig { returns(T.nilable(Vonage::NumberInsight2)) }
95
- def number_insight_2
96
- @number_insight_2 ||= T.let(NumberInsight2.new(config), T.nilable(Vonage::NumberInsight2))
97
- end
98
-
99
85
  # @return [Numbers]
100
86
  #
101
87
  sig { returns(T.nilable(Vonage::Numbers)) }
@@ -110,13 +96,6 @@ module Vonage
110
96
  @pricing ||= T.let(PricingTypes.new(config), T.nilable(Vonage::PricingTypes))
111
97
  end
112
98
 
113
- # @return [ProactiveConnect]
114
- #
115
- sig { returns(T.nilable(Vonage::ProactiveConnect)) }
116
- def proactive_connect
117
- @proactive_connect ||= T.let(ProactiveConnect.new(config), T.nilable(Vonage::ProactiveConnect))
118
- end
119
-
120
99
  # @return [Redact]
121
100
  #
122
101
  sig { returns(T.nilable(Vonage::Redact)) }
@@ -138,13 +117,6 @@ module Vonage
138
117
  @sms ||= T.let(SMS.new(config), T.nilable(Vonage::SMS))
139
118
  end
140
119
 
141
- # @return [Subaccounts]
142
- #
143
- sig { returns(T.nilable(Vonage::Subaccounts)) }
144
- def subaccounts
145
- @subaccounts ||= T.let(Subaccounts.new(config), T.nilable(Vonage::Subaccounts))
146
- end
147
-
148
120
  # @return [TFA]
149
121
  #
150
122
  sig { returns(T.nilable(Vonage::TFA)) }
@@ -152,13 +124,6 @@ module Vonage
152
124
  @tfa ||= T.let(TFA.new(config), T.nilable(Vonage::TFA))
153
125
  end
154
126
 
155
- # @return [Users]
156
- #
157
- sig { returns(T.nilable(Vonage::Users)) }
158
- def users
159
- @users ||= T.let(Users.new(config), T.nilable(Vonage::Users))
160
- end
161
-
162
127
  # @return [Verify]
163
128
  #
164
129
  sig { returns(T.nilable(Vonage::Verify)) }
@@ -166,13 +131,6 @@ module Vonage
166
131
  @verify ||= T.let(Verify.new(config), T.nilable(Vonage::Verify))
167
132
  end
168
133
 
169
- # @return [Verify2]
170
- #
171
- sig { returns(T.nilable(Vonage::Verify2)) }
172
- def verify2
173
- @verify2 ||= T.let(Verify2.new(config), T.nilable(Vonage::Verify2))
174
- end
175
-
176
134
  # @return [Video]
177
135
  #
178
136
  sig { returns(T.nilable(Vonage::Video)) }
@@ -1,6 +1,6 @@
1
1
  # typed: strong
2
2
 
3
3
  module Vonage
4
- class ClientError < APIError
4
+ class ClientError < Error
5
5
  end
6
6
  end
data/lib/vonage/config.rb CHANGED
@@ -19,7 +19,6 @@ module Vonage
19
19
  self.signature_method = ENV['VONAGE_SIGNATURE_METHOD'] || 'md5hash'
20
20
  self.token = T.let(nil, T.nilable(String))
21
21
  self.video_host = 'video.api.vonage.com'
22
- self.vonage_host = 'api-eu.vonage.com'
23
22
  end
24
23
 
25
24
  # Merges the config with the given options hash.
@@ -131,11 +130,7 @@ module Vonage
131
130
 
132
131
  # @return [Vonage::Logger]
133
132
  #
134
- sig { params(logger: T.nilable(
135
- defined?(ActiveSupport::BroadcastLogger) ?
136
- T.any(::Logger, Vonage::Logger, ActiveSupport::BroadcastLogger)
137
- : T.any(::Logger, Vonage::Logger)
138
- )).returns(T.nilable(Vonage::Logger)) }
133
+ sig { params(logger: T.nilable(T.any(::Logger, Vonage::Logger))).returns(T.nilable(Vonage::Logger)) }
139
134
  def logger=(logger)
140
135
  @logger = T.let(Logger.new(logger), T.nilable(Vonage::Logger))
141
136
  end
@@ -206,9 +201,6 @@ module Vonage
206
201
 
207
202
  sig { returns(String) }
208
203
  attr_accessor :video_host
209
-
210
- sig { returns(String) }
211
- attr_accessor :vonage_host
212
204
 
213
205
  protected
214
206
 
data/lib/vonage/errors.rb CHANGED
@@ -1,25 +1,14 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
- require "json"
3
+ require 'json'
4
4
 
5
5
  module Vonage
6
6
  module Errors
7
7
  extend T::Sig
8
8
 
9
- sig do
10
- params(
11
- response:
12
- T.any(
13
- Net::HTTPUnauthorized,
14
- Net::HTTPClientError,
15
- Net::HTTPServerError,
16
- T.untyped
17
- )
18
- ).returns(Vonage::Error)
19
- end
9
+ sig {params(response: T.any(Net::HTTPUnauthorized, Net::HTTPClientError, Net::HTTPServerError, T.untyped)).returns(Vonage::Error)}
20
10
  def self.parse(response)
21
- exception_class =
22
- case response
11
+ exception_class = case response
23
12
  when Net::HTTPUnauthorized
24
13
  AuthenticationError
25
14
  when Net::HTTPClientError
@@ -27,40 +16,34 @@ module Vonage
27
16
  when Net::HTTPServerError
28
17
  ServerError
29
18
  else
30
- APIError
19
+ Error
31
20
  end
32
21
 
33
- message = response.content_type.to_s.include?("json") ? set_message(response) : ""
34
-
35
- exception_class.new(message, http_response: response)
36
- end
37
-
38
- def self.set_message(response)
39
- hash = ::JSON.parse(response.body)
40
-
41
- if hash.key?("error_title")
42
- hash["error_title"]
43
- elsif hash.key?("error-code-label")
44
- hash["error-code-label"]
45
- elsif hash.key?("description")
46
- hash["description"]
47
- elsif hash.key?("message")
48
- hash["message"]
49
- elsif problem_details?(hash)
50
- problem_details_message(hash)
51
- else
52
- ""
22
+ message = if response.content_type == 'application/json'
23
+ hash = ::JSON.parse(response.body)
24
+
25
+ if hash.key?('error_title')
26
+ hash['error_title']
27
+ elsif hash.key?('error-code-label')
28
+ hash['error-code-label']
29
+ elsif hash.key?('description')
30
+ hash['description']
31
+ elsif problem_details?(hash)
32
+ problem_details_message(hash)
33
+ end
53
34
  end
35
+
36
+ exception_class.new(message)
54
37
  end
55
38
 
56
39
  sig { params(hash: T::Hash[String, T.untyped]).returns(T::Boolean) }
57
40
  def self.problem_details?(hash)
58
- hash.key?("title") && hash.key?("detail") && hash.key?("type")
41
+ hash.key?('title') && hash.key?('detail') && hash.key?('type')
59
42
  end
60
43
 
61
44
  sig { params(hash: T::Hash[String, T.untyped]).returns(String) }
62
45
  def self.problem_details_message(hash)
63
- "#{hash["title"]}. #{hash["detail"]} See #{hash["type"]} for more info, or email support@vonage.com if you have any questions."
46
+ "#{hash['title']}. #{hash['detail']} See #{hash['type']} for more info, or email support@nexmo.com if you have any questions."
64
47
  end
65
48
  end
66
49
 
data/lib/vonage/gsm7.rb CHANGED
@@ -4,7 +4,7 @@ module Vonage
4
4
  module GSM7
5
5
  extend T::Sig
6
6
 
7
- CHARACTERS = "\n\f\r !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ ¡£¤¥§¿ÄÅÆÇÉÑÖØÜßàäåæèéìñòöøùüΓΔΘΛΞΠΣΦΨΩ€"
7
+ CHARACTERS = "\n\f\r !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ ¡£¤¥§¿ÄÅÆÉÑÖØÜßàäåæçèéìñòöøùüΓΔΘΛΞΠΣΦΨΩ€"
8
8
 
9
9
  REGEXP = /\A[#{Regexp.escape(CHARACTERS)}]*\z/
10
10
 
data/lib/vonage/jwt.rb CHANGED
@@ -39,22 +39,5 @@ module Vonage
39
39
  payload[:private_key] = private_key if private_key && !payload[:private_key]
40
40
  @token = Vonage::JWTBuilder.new(payload).jwt.generate
41
41
  end
42
-
43
- # Validate a JSON Web Token from a Vonage Webhook.
44
- #
45
- # Certain Vonage APIs include a JWT signed with a user's account signature secret in
46
- # the Authorization header of Webhook requests. This method can be used to verify that those requests originate
47
- # from the Vonage API.
48
- #
49
- # @param [String, required] :token The JWT from the Webhook's Authorization header
50
- # @param [String, required] :signature_secret The account signature secret
51
- #
52
- # @return [Boolean] true, if the JWT is verified, false otherwise
53
- #
54
- # @see https://developer.vonage.com/en/getting-started/concepts/webhooks#decoding-signed-webhooks
55
- #
56
- def self.verify_hs256_signature(token:, signature_secret:)
57
- verify_signature(token, signature_secret, 'HS256')
58
- end
59
42
  end
60
43
  end
data/lib/vonage/keys.rb CHANGED
@@ -27,8 +27,6 @@ module Vonage
27
27
  'has_video',
28
28
  'remove_stream',
29
29
  'screenshare_type',
30
- 'session_id',
31
- 'stream_mode',
32
30
  'archive_mode'
33
31
  ]
34
32
  hash.transform_keys do |k|
data/lib/vonage/logger.rb CHANGED
@@ -7,11 +7,7 @@ module Vonage
7
7
  class Logger
8
8
  extend T::Sig
9
9
 
10
- sig { params(logger: T.nilable(
11
- defined?(ActiveSupport::BroadcastLogger) ?
12
- T.any(::Logger, Vonage::Logger, ActiveSupport::BroadcastLogger)
13
- : T.any(::Logger, Vonage::Logger)
14
- )).void }
10
+ sig { params(logger: T.nilable(T.any(::Logger, Vonage::Logger))).void }
15
11
  def initialize(logger)
16
12
  @logger = logger || ::Logger.new(nil)
17
13
  end
@@ -24,6 +20,8 @@ module Vonage
24
20
 
25
21
  sig { params(request: T.any(Net::HTTP::Post, Net::HTTP::Get, Net::HTTP::Delete, Net::HTTP::Put, Net::HTTP::Patch)).void }
26
22
  def log_request_info(request)
23
+ @logger = T.let(@logger, T.nilable(T.any(::Logger, Vonage::Logger)))
24
+
27
25
  T.must(@logger).info do
28
26
  format('Vonage API request', {
29
27
  method: request.method,
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Vonage
4
4
  class Messaging::Channels::Viber < Messaging::Message
5
- MESSAGE_TYPES = ['text', 'image', 'video', 'file']
5
+ MESSAGE_TYPES = ['text', 'image']
6
6
 
7
7
  attr_reader :data
8
8
 
@@ -33,13 +33,6 @@ module Vonage
33
33
  when 'image'
34
34
  raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
35
35
  raise Vonage::ClientError.new(":url is required in :message") unless message[:url]
36
- when 'video'
37
- raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
38
- raise Vonage::ClientError.new(":url is required in :message") unless message[:url]
39
- raise Vonage::ClientError.new(":thumb_url is required in :message") unless message[:thumb_url]
40
- when 'file'
41
- raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
42
- raise Vonage::ClientError.new(":url is required in :message") unless message[:url]
43
36
  end
44
37
  end
45
38
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Vonage
4
4
  class Messaging::Channels::WhatsApp < Messaging::Message
5
- MESSAGE_TYPES = ['text', 'image', 'audio', 'video', 'file', 'template', 'sticker', 'custom']
5
+ MESSAGE_TYPES = ['text', 'image', 'audio', 'video', 'file', 'template', 'custom']
6
6
 
7
7
  attr_reader :data
8
8
 
@@ -35,8 +35,6 @@ module Vonage
35
35
  raise Vonage::ClientError.new(":name is required in :template") unless message[:name]
36
36
  raise Vonage::ClientError.new(":whatsapp is required in :opts") unless opts[:whatsapp]
37
37
  raise Vonage::ClientError.new(":locale is required in :whatsapp") unless opts[:whatsapp][:locale]
38
- when 'sticker'
39
- raise Vonage::ClientError.new(":message must contain either :id or :url") unless message.has_key?(:id) ^ message.has_key?(:url)
40
38
  when 'custom'
41
39
  raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
42
40
  else
@@ -25,16 +25,5 @@ module Vonage
25
25
  def send(params)
26
26
  request('/v1/messages', params: params, type: Post)
27
27
  end
28
-
29
- # Validate a JSON Web Token from a Messages API Webhook.
30
- #
31
- # @param [String, required] :token The JWT from the Webhook's Authorization header
32
- # @param [String, optional] :signature_secret The account signature secret. Required, unless `signature_secret`
33
- # is set in `Config`
34
- #
35
- # @return [Boolean] true, if the JWT is verified, false otherwise
36
- def verify_webhook_token(token:, signature_secret: @config.signature_secret)
37
- JWT.verify_hs256_signature(token: token, signature_secret: signature_secret)
38
- end
39
28
  end
40
29
  end
@@ -1,8 +1,6 @@
1
1
  # typed: true
2
2
  # frozen_string_literal: true
3
-
4
3
  require 'net/http'
5
- require 'net/http/post/multipart'
6
4
  require 'json'
7
5
 
8
6
  module Vonage
@@ -23,7 +21,8 @@ module Vonage
23
21
  end
24
22
 
25
23
  def self.host=(host)
26
- raise ArgumentError unless %i[rest_host video_host vonage_host].include?(host)
24
+ raise ArgumentError unless host == :rest_host || host == :video_host
25
+
27
26
  @host = host
28
27
  end
29
28
 
@@ -48,7 +47,6 @@ module Vonage
48
47
  end
49
48
 
50
49
  protected
51
-
52
50
  # :nocov:
53
51
 
54
52
  Get = Net::HTTP::Get
@@ -61,7 +59,7 @@ module Vonage
61
59
  authentication = self.class.authentication.new(@config)
62
60
  authentication.update(params)
63
61
 
64
- uri = URI("https://" + @host + path)
62
+ uri = URI('https://' + @host + path)
65
63
  unless type.const_get(:REQUEST_HAS_BODY) || params.empty?
66
64
  uri.query = Params.encode(params)
67
65
  end
@@ -73,20 +71,17 @@ module Vonage
73
71
  request = type.new(uri)
74
72
 
75
73
  # set headers
76
- request["User-Agent"] = UserAgent.string(
77
- @config.app_name,
78
- @config.app_version
79
- )
80
- request["Accept"] = "application/json"
81
- self.class.request_headers.each { |key, value| request[key] = value }
74
+ request['User-Agent'] = UserAgent.string(@config.app_name, @config.app_version)
75
+ request['Accept'] = 'application/json'
76
+ self.class.request_headers.each do |key, value|
77
+ request[key] = value
78
+ end
82
79
 
83
80
  # Set BearerToken if needed
84
81
  authentication.update(request)
85
82
 
86
83
  # set body
87
- if type.const_get(:REQUEST_HAS_BODY)
88
- self.class.request_body.update(request, params)
89
- end
84
+ self.class.request_body.update(request, params) if type.const_get(:REQUEST_HAS_BODY)
90
85
 
91
86
  request
92
87
  end
@@ -106,31 +101,16 @@ module Vonage
106
101
  end
107
102
 
108
103
  def request(path, params: nil, type: Get, response_class: Response, &block)
109
- auto_advance =
110
- (
111
- if !params.nil? && params.key?(:auto_advance)
112
- params[:auto_advance]
113
- else
114
- false
115
- end
116
- )
117
-
118
- params =
119
- params.tap { |params| params.delete(:auto_advance) } if !params.nil? &&
120
- params.key?(:auto_advance)
104
+ auto_advance = !params.nil? && params.key?(:auto_advance) ? params[:auto_advance] : false
105
+
106
+ params = params.tap { |params| params.delete(:auto_advance) } if !params.nil? && params.key?(:auto_advance)
121
107
 
122
108
  request = build_request(path: path, params: params || {}, type: type)
123
109
 
124
110
  response = make_request!(request, &block)
125
111
 
126
112
  if auto_advance
127
- iterable_request(
128
- path,
129
- response: response,
130
- response_class: response_class,
131
- params: params,
132
- &block
133
- )
113
+ iterable_request(path, response: response, response_class: response_class, params: params, &block)
134
114
  else
135
115
  return if block
136
116
 
@@ -138,59 +118,22 @@ module Vonage
138
118
  end
139
119
  end
140
120
 
141
- def multipart_post_request(path, filepath:, file_name:, mime_type:, params: {}, override_uri: nil, no_auth: false, response_class: Response, &block)
142
- authentication = self.class.authentication.new(@config) unless no_auth
143
-
144
- uri = override_uri ? URI(override_uri) : URI('https://' + @host + path)
145
-
146
- http = override_uri ? Net::HTTP.new(uri.host, Net::HTTP.https_default_port, p_addr = nil) : @http
147
- http.use_ssl = true
148
- http.set_debug_output($stdout)
149
-
150
- response = File.open(filepath) do |file|
151
- request = Net::HTTP::Post::Multipart.new(
152
- uri,
153
- params.merge(file: Multipart::Post::UploadIO.new(file, mime_type, file_name))
154
- )
155
-
156
- request['User-Agent'] = UserAgent.string(@config.app_name, @config.app_version)
157
-
158
- # Set BearerToken if needed
159
- authentication.update(request) unless no_auth
160
-
161
- logger.log_request_info(request)
162
-
163
- http.request(request, &block)
164
- end
165
-
166
- logger.log_response_info(response, @host)
167
-
168
- return if block
169
-
170
- logger.debug(response.body) if response.body
171
-
172
- parse(response, response_class)
173
- end
174
-
175
121
  def iterable_request(path, response: nil, response_class: nil, params: {}, &block)
176
122
  json_response = ::JSON.parse(response.body)
177
123
  response = parse(response, response_class)
178
124
  remainder = remaining_count(json_response)
179
125
 
180
126
  while remainder > 0
181
- params = { page_size: json_response["page_size"] }
182
-
183
- if json_response["record_index"] && json_response["record_index"] == 0
184
- params[:record_index] = json_response["page_size"]
185
- elsif json_response["record_index"] &&
186
- json_response["record_index"] != 0
187
- params[:record_index] = (
188
- json_response["record_index"] + json_response["page_size"]
189
- )
127
+ params = { page_size: json_response['page_size'] }
128
+
129
+ if json_response['record_index'] && json_response['record_index'] == 0
130
+ params[:record_index] = json_response['page_size']
131
+ elsif json_response['record_index'] && json_response['record_index'] != 0
132
+ params[:record_index] = (json_response['record_index'] + json_response['page_size'])
190
133
  end
191
134
 
192
- if json_response["total_pages"]
193
- params[:page] = json_response["page"] + 1
135
+ if json_response['total_pages']
136
+ params[:page] = json_response['page'] + 1
194
137
  end
195
138
 
196
139
  request = build_request(path: path, type: Get, params: params)
@@ -201,15 +144,11 @@ module Vonage
201
144
  json_response = ::JSON.parse(paginated_response.body)
202
145
  remainder = remaining_count(json_response)
203
146
 
204
- if response.respond_to?("_embedded")
205
- collection_name = collection_name(response["_embedded"])
206
- response["_embedded"][collection_name].push(
207
- *next_response["_embedded"][collection_name]
208
- )
147
+ if response.respond_to?('_embedded')
148
+ collection_name = collection_name(response['_embedded'])
149
+ response['_embedded'][collection_name].push(*next_response['_embedded'][collection_name])
209
150
  else
210
- response[collection_name(response)].push(
211
- *next_response[collection_name(next_response)]
212
- )
151
+ response[collection_name(response)].push(*next_response[collection_name(next_response)])
213
152
  end
214
153
  end
215
154
 
@@ -217,51 +156,43 @@ module Vonage
217
156
  end
218
157
 
219
158
  def remaining_count(params)
220
- if params.key?("total_pages")
221
- params["total_pages"] - params["page"]
222
- elsif params.key?("count")
223
- params["count"] -
224
- (
225
- if params["record_index"] == 0
226
- params["page_size"]
227
- else
228
- (params["record_index"] + params["page_size"])
229
- end
230
- )
159
+ if params.key?('total_pages')
160
+ params['total_pages'] - params['page']
161
+ elsif params.key?('count')
162
+ params['count'] - (params['record_index'] == 0 ? params['page_size'] : (params['record_index'] + params['page_size']))
231
163
  else
232
164
  0
233
165
  end
234
166
  end
235
167
 
236
168
  def collection_name(params)
237
- @collection_name ||=
238
- case
239
- when params.respond_to?("calls")
240
- "calls"
241
- when params.respond_to?("users")
242
- "users"
243
- when params.respond_to?("legs")
244
- "legs"
245
- when params.respond_to?("data")
246
- "data"
247
- when params.respond_to?("conversations")
248
- "conversations"
249
- when params.respond_to?("applications")
250
- "applications"
251
- when params.respond_to?("records")
252
- "records"
253
- when params.respond_to?("reports")
254
- "reports"
255
- when params.respond_to?("networks")
256
- "networks"
257
- when params.respond_to?("countries")
258
- "countries"
259
- when params.respond_to?("media")
260
- "media"
261
- when params.respond_to?("numbers")
262
- "numbers"
263
- when params.respond_to?("events")
264
- "events"
169
+ @collection_name ||= case
170
+ when params.respond_to?('calls')
171
+ 'calls'
172
+ when params.respond_to?('users')
173
+ 'users'
174
+ when params.respond_to?('legs')
175
+ 'legs'
176
+ when params.respond_to?('data')
177
+ 'data'
178
+ when params.respond_to?('conversations')
179
+ 'conversations'
180
+ when params.respond_to?('applications')
181
+ 'applications'
182
+ when params.respond_to?('records')
183
+ 'records'
184
+ when params.respond_to?('reports')
185
+ 'reports'
186
+ when params.respond_to?('networks')
187
+ 'networks'
188
+ when params.respond_to?('countries')
189
+ 'countries'
190
+ when params.respond_to?('media')
191
+ 'media'
192
+ when params.respond_to?('numbers')
193
+ 'numbers'
194
+ when params.respond_to?('events')
195
+ 'events'
265
196
  else
266
197
  params.entity.attributes.keys[0].to_s
267
198
  end
@@ -272,7 +203,7 @@ module Vonage
272
203
  when Net::HTTPNoContent
273
204
  response_class.new(nil, response)
274
205
  when Net::HTTPSuccess
275
- if response['Content-Type'] && response['Content-Type'].split(';').first == 'application/json' && !response.body.empty?
206
+ if response['Content-Type'].split(';').first == 'application/json'
276
207
  entity = ::JSON.parse(response.body, object_class: Vonage::Entity)
277
208
 
278
209
  response_class.new(entity, response)
@@ -296,8 +227,6 @@ module Vonage
296
227
  @config.rest_host
297
228
  when :video_host
298
229
  @config.video_host
299
- when :vonage_host
300
- @config.vonage_host
301
230
  else
302
231
  @config.api_host
303
232
  end