vonage 7.30.2 → 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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +92 -604
  3. data/lib/vonage/applications.rb +4 -12
  4. data/lib/vonage/basic.rb +1 -1
  5. data/lib/vonage/bearer_token.rb +1 -1
  6. data/lib/vonage/client.rb +0 -65
  7. data/lib/vonage/client_error.rb +1 -1
  8. data/lib/vonage/config.rb +1 -4
  9. data/lib/vonage/conversations/events.rb +0 -12
  10. data/lib/vonage/conversations/legs.rb +0 -6
  11. data/lib/vonage/conversations/members.rb +0 -15
  12. data/lib/vonage/conversations/users.rb +0 -15
  13. data/lib/vonage/conversations.rb +0 -30
  14. data/lib/vonage/errors.rb +20 -37
  15. data/lib/vonage/gsm7.rb +1 -1
  16. data/lib/vonage/http.rb +3 -3
  17. data/lib/vonage/jwt.rb +0 -17
  18. data/lib/vonage/key_secret_params.rb +2 -3
  19. data/lib/vonage/keys.rb +1 -14
  20. data/lib/vonage/logger.rb +3 -0
  21. data/lib/vonage/messaging/channels/messenger.rb +0 -2
  22. data/lib/vonage/messaging/channels/mms.rb +0 -2
  23. data/lib/vonage/messaging/channels/sms.rb +0 -2
  24. data/lib/vonage/messaging/channels/viber.rb +2 -11
  25. data/lib/vonage/messaging/channels/whats_app.rb +1 -5
  26. data/lib/vonage/messaging/message.rb +1 -4
  27. data/lib/vonage/messaging.rb +3 -42
  28. data/lib/vonage/namespace.rb +68 -137
  29. data/lib/vonage/numbers.rb +17 -40
  30. data/lib/vonage/server_error.rb +1 -1
  31. data/lib/vonage/signature.rb +5 -5
  32. data/lib/vonage/sms.rb +20 -20
  33. data/lib/vonage/version.rb +1 -1
  34. data/lib/vonage/video/archives.rb +58 -25
  35. data/lib/vonage/video/list_response.rb +11 -0
  36. data/lib/vonage/video/moderation.rb +22 -7
  37. data/lib/vonage/video/signals.rb +9 -4
  38. data/lib/vonage/video/streams.rb +12 -6
  39. data/lib/vonage/video.rb +13 -50
  40. data/lib/vonage/voice/actions/connect.rb +5 -34
  41. data/lib/vonage/voice/actions/conversation.rb +4 -10
  42. data/lib/vonage/voice/actions/input.rb +3 -19
  43. data/lib/vonage/voice/actions/notify.rb +3 -8
  44. data/lib/vonage/voice/actions/pay.rb +107 -0
  45. data/lib/vonage/voice/actions/record.rb +4 -52
  46. data/lib/vonage/voice/actions/stream.rb +4 -48
  47. data/lib/vonage/voice/actions/talk.rb +4 -54
  48. data/lib/vonage/voice/talk.rb +1 -11
  49. data/lib/vonage/voice.rb +0 -24
  50. data/lib/vonage.rb +0 -4
  51. data/vonage.gemspec +1 -3
  52. metadata +12 -108
  53. data/lib/vonage/api_error.rb +0 -33
  54. data/lib/vonage/conversation/event/list_response.rb +0 -11
  55. data/lib/vonage/conversation/event.rb +0 -108
  56. data/lib/vonage/conversation/list_response.rb +0 -11
  57. data/lib/vonage/conversation/member/list_response.rb +0 -11
  58. data/lib/vonage/conversation/member.rb +0 -134
  59. data/lib/vonage/conversation/user/conversations_list_response.rb +0 -11
  60. data/lib/vonage/conversation/user/sessions_list_response.rb +0 -11
  61. data/lib/vonage/conversation/user.rb +0 -67
  62. data/lib/vonage/conversation.rb +0 -164
  63. data/lib/vonage/meetings/applications.rb +0 -28
  64. data/lib/vonage/meetings/dial_in_numbers/list_response.rb +0 -11
  65. data/lib/vonage/meetings/dial_in_numbers.rb +0 -26
  66. data/lib/vonage/meetings/recordings.rb +0 -42
  67. data/lib/vonage/meetings/rooms/list_response.rb +0 -11
  68. data/lib/vonage/meetings/rooms.rb +0 -167
  69. data/lib/vonage/meetings/sessions/list_response.rb +0 -11
  70. data/lib/vonage/meetings/sessions.rb +0 -31
  71. data/lib/vonage/meetings/themes/list_response.rb +0 -11
  72. data/lib/vonage/meetings/themes.rb +0 -239
  73. data/lib/vonage/meetings.rb +0 -50
  74. data/lib/vonage/messaging/channels/rcs.rb +0 -44
  75. data/lib/vonage/network_authentication/client_authentication.rb +0 -39
  76. data/lib/vonage/network_authentication/server_authentication.rb +0 -47
  77. data/lib/vonage/network_authentication.rb +0 -22
  78. data/lib/vonage/network_number_verification.rb +0 -92
  79. data/lib/vonage/network_sim_swap.rb +0 -84
  80. data/lib/vonage/number_insight_2.rb +0 -36
  81. data/lib/vonage/proactive_connect/events/list_response.rb +0 -11
  82. data/lib/vonage/proactive_connect/events.rb +0 -71
  83. data/lib/vonage/proactive_connect/item.rb +0 -116
  84. data/lib/vonage/proactive_connect/items/file_response.rb +0 -32
  85. data/lib/vonage/proactive_connect/items/list_response.rb +0 -11
  86. data/lib/vonage/proactive_connect/items.rb +0 -116
  87. data/lib/vonage/proactive_connect/list.rb +0 -186
  88. data/lib/vonage/proactive_connect/lists/list_response.rb +0 -11
  89. data/lib/vonage/proactive_connect/lists.rb +0 -38
  90. data/lib/vonage/proactive_connect.rb +0 -43
  91. data/lib/vonage/subaccounts/balance_transfers/list_response.rb +0 -11
  92. data/lib/vonage/subaccounts/credit_transfers/list_response.rb +0 -11
  93. data/lib/vonage/subaccounts/list_response.rb +0 -15
  94. data/lib/vonage/subaccounts.rb +0 -203
  95. data/lib/vonage/users/list_response.rb +0 -11
  96. data/lib/vonage/users.rb +0 -156
  97. data/lib/vonage/verify2/channels/email.rb +0 -36
  98. data/lib/vonage/verify2/channels/silent_auth.rb +0 -45
  99. data/lib/vonage/verify2/channels/sms.rb +0 -63
  100. data/lib/vonage/verify2/channels/voice.rb +0 -32
  101. data/lib/vonage/verify2/channels/whats_app.rb +0 -39
  102. data/lib/vonage/verify2/channels/whats_app_interactive.rb +0 -32
  103. data/lib/vonage/verify2/start_verification_options.rb +0 -63
  104. data/lib/vonage/verify2/template_fragments/list_response.rb +0 -11
  105. data/lib/vonage/verify2/template_fragments.rb +0 -125
  106. data/lib/vonage/verify2/templates/list_response.rb +0 -11
  107. data/lib/vonage/verify2/templates.rb +0 -86
  108. data/lib/vonage/verify2/workflow.rb +0 -39
  109. data/lib/vonage/verify2/workflow_builder.rb +0 -25
  110. data/lib/vonage/verify2.rb +0 -112
  111. data/lib/vonage/video/archives/list_response.rb +0 -11
  112. data/lib/vonage/video/broadcasts/list_response.rb +0 -11
  113. data/lib/vonage/video/broadcasts.rb +0 -75
  114. data/lib/vonage/video/captions.rb +0 -67
  115. data/lib/vonage/video/renders/list_response.rb +0 -11
  116. data/lib/vonage/video/renders.rb +0 -107
  117. data/lib/vonage/video/sip.rb +0 -48
  118. data/lib/vonage/video/streams/list_response.rb +0 -11
  119. data/lib/vonage/video/web_socket.rb +0 -61
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/http.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
- require 'net/http/persistent'
3
+ require 'net/http'
4
4
 
5
5
  module Vonage
6
6
  module HTTP
@@ -21,7 +21,7 @@ module Vonage
21
21
  end
22
22
  end
23
23
 
24
- sig { params(http: Net::HTTP::Persistent).returns(T::Hash[Symbol, T.untyped]) }
24
+ sig { params(http: Net::HTTP).returns(T::Hash[Symbol, T.untyped]) }
25
25
  def set(http)
26
26
  @hash.each do |name, value|
27
27
  http.public_send(defined_options.fetch(name), value)
@@ -34,7 +34,7 @@ module Vonage
34
34
  def defined_options
35
35
  @defined_options = T.let(@defined_options, T.nilable(T::Hash[Symbol, T.untyped]))
36
36
 
37
- @defined_options ||= Net::HTTP::Persistent.instance_methods.grep(/\w=\z/).each_with_object({}) do |name, hash|
37
+ @defined_options ||= Net::HTTP.instance_methods.grep(/\w=\z/).each_with_object({}) do |name, hash|
38
38
  hash[name.to_s.chomp('=').to_sym] = name
39
39
  end
40
40
  end
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
@@ -5,10 +5,9 @@ module Vonage
5
5
  extend T::Sig
6
6
 
7
7
  sig { params(
8
- object: T.any(T::Hash[T.untyped, T.untyped], URI::HTTPS, Net::HTTP::Post, Net::HTTP::Get),
9
- data: T.nilable(Hash)
8
+ object: T.any(T::Hash[T.untyped, T.untyped], URI::HTTPS, Net::HTTP::Post, Net::HTTP::Get)
10
9
  ).void }
11
- def update(object, data)
10
+ def update(object)
12
11
  return unless object.is_a?(Hash)
13
12
 
14
13
  @config = T.let(@config, T.nilable(Vonage::Config))
data/lib/vonage/keys.rb CHANGED
@@ -27,20 +27,7 @@ module Vonage
27
27
  'has_video',
28
28
  'remove_stream',
29
29
  'screenshare_type',
30
- 'session_id',
31
- 'output_mode',
32
- 'stream_mode',
33
- 'archive_mode',
34
- 'multi_archive_tag',
35
- 'language_code',
36
- 'max_duration',
37
- 'partial_captions',
38
- 'status_callback_url',
39
- 'audio_rate',
40
- 'phone_number',
41
- 'hashed_phone_number',
42
- 'max_age',
43
- 'max_bitrate'
30
+ 'archive_mode'
44
31
  ]
45
32
  hash.transform_keys do |k|
46
33
  if exceptions.include?(k.to_s)
data/lib/vonage/logger.rb CHANGED
@@ -7,6 +7,7 @@ module Vonage
7
7
  class Logger
8
8
  extend T::Sig
9
9
 
10
+ sig { params(logger: T.nilable(T.any(::Logger, Vonage::Logger))).void }
10
11
  def initialize(logger)
11
12
  @logger = logger || ::Logger.new(nil)
12
13
  end
@@ -19,6 +20,8 @@ module Vonage
19
20
 
20
21
  sig { params(request: T.any(Net::HTTP::Post, Net::HTTP::Get, Net::HTTP::Delete, Net::HTTP::Put, Net::HTTP::Patch)).void }
21
22
  def log_request_info(request)
23
+ @logger = T.let(@logger, T.nilable(T.any(::Logger, Vonage::Logger)))
24
+
22
25
  T.must(@logger).info do
23
26
  format('Vonage API request', {
24
27
  method: request.method,
@@ -7,8 +7,6 @@ module Vonage
7
7
  attr_reader :data
8
8
 
9
9
  def initialize(attributes = {})
10
- @to = attributes.fetch(:to, nil)
11
- @from = attributes.fetch(:from, nil)
12
10
  @type = attributes.fetch(:type, nil)
13
11
  @message = attributes.fetch(:message, nil)
14
12
  @opts = attributes.fetch(:opts, {})
@@ -7,8 +7,6 @@ module Vonage
7
7
  attr_reader :data
8
8
 
9
9
  def initialize(attributes = {})
10
- @to = attributes.fetch(:to, nil)
11
- @from = attributes.fetch(:from, nil)
12
10
  @type = attributes.fetch(:type, nil)
13
11
  @message = attributes.fetch(:message, nil)
14
12
  @opts = attributes.fetch(:opts, {})
@@ -5,8 +5,6 @@ module Vonage
5
5
  attr_reader :data
6
6
 
7
7
  def initialize(attributes = {})
8
- @to = attributes.fetch(:to, nil)
9
- @from = attributes.fetch(:from, nil)
10
8
  @type = attributes.fetch(:type, 'text')
11
9
  @message = attributes.fetch(:message, nil)
12
10
  @opts = attributes.fetch(:opts, {})
@@ -2,13 +2,11 @@
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
 
9
9
  def initialize(attributes = {})
10
- @to = attributes.fetch(:to, nil)
11
- @from = attributes.fetch(:from, nil)
12
10
  @type = attributes.fetch(:type, nil)
13
11
  @message = attributes.fetch(:message, nil)
14
12
  @opts = attributes.fetch(:opts, {})
@@ -20,7 +18,7 @@ module Vonage
20
18
  private
21
19
 
22
20
  def build
23
- data[:channel] = 'viber_service'
21
+ data[:channel] = ' viber_service'
24
22
  super
25
23
  end
26
24
 
@@ -35,13 +33,6 @@ module Vonage
35
33
  when 'image'
36
34
  raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
37
35
  raise Vonage::ClientError.new(":url is required in :message") unless message[:url]
38
- when 'video'
39
- raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
40
- raise Vonage::ClientError.new(":url is required in :message") unless message[:url]
41
- raise Vonage::ClientError.new(":thumb_url is required in :message") unless message[:thumb_url]
42
- when 'file'
43
- raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
44
- raise Vonage::ClientError.new(":url is required in :message") unless message[:url]
45
36
  end
46
37
  end
47
38
  end
@@ -2,13 +2,11 @@
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
 
9
9
  def initialize(attributes = {})
10
- @to = attributes.fetch(:to, nil)
11
- @from = attributes.fetch(:from, nil)
12
10
  @type = attributes.fetch(:type, nil)
13
11
  @message = attributes.fetch(:message, nil)
14
12
  @opts = attributes.fetch(:opts, {})
@@ -37,8 +35,6 @@ module Vonage
37
35
  raise Vonage::ClientError.new(":name is required in :template") unless message[:name]
38
36
  raise Vonage::ClientError.new(":whatsapp is required in :opts") unless opts[:whatsapp]
39
37
  raise Vonage::ClientError.new(":locale is required in :whatsapp") unless opts[:whatsapp][:locale]
40
- when 'sticker'
41
- raise Vonage::ClientError.new(":message must contain either :id or :url") unless message.has_key?(:id) ^ message.has_key?(:url)
42
38
  when 'custom'
43
39
  raise Vonage::ClientError.new(":message must be a Hash") unless message.is_a? Hash
44
40
  else
@@ -5,7 +5,6 @@ module Vonage
5
5
  CHANNELS = {
6
6
  sms: Vonage::Messaging::Channels::SMS,
7
7
  mms: Vonage::Messaging::Channels::MMS,
8
- rcs: Vonage::Messaging::Channels::RCS,
9
8
  whatsapp: Vonage::Messaging::Channels::WhatsApp,
10
9
  messenger: Vonage::Messaging::Channels::Messenger,
11
10
  viber: Vonage::Messaging::Channels::Viber
@@ -25,7 +24,7 @@ module Vonage
25
24
 
26
25
  private
27
26
 
28
- attr_accessor :to, :from, :type, :message, :opts
27
+ attr_accessor :type, :message, :opts
29
28
  attr_writer :data
30
29
 
31
30
  def after_initialize!
@@ -35,8 +34,6 @@ module Vonage
35
34
  end
36
35
 
37
36
  def build
38
- data[:to] = to if to
39
- data[:from] = from if from
40
37
  data[:message_type] = type
41
38
  data[type.to_sym] = message
42
39
  data.merge!(opts)
@@ -1,21 +1,16 @@
1
1
  # typed: true
2
2
  # frozen_string_literal: true
3
- require 'forwardable'
4
3
 
5
4
  module Vonage
6
5
  class Messaging < Namespace
7
- extend Forwardable
8
-
9
6
  self.authentication = BearerToken
10
7
 
11
8
  self.request_body = JSON
12
9
 
13
- def_delegators Message, *Message::CHANNELS.keys
14
-
15
10
  # Send a Message.
16
11
  #
17
12
  # @example
18
- # message = client.messaging.sms(message: "Hello world!")
13
+ # message = Vonage::Messaging::Message.sms(message: "Hello world!")
19
14
  # response = client.messaging.send(to: "447700900000", from: "447700900001", **message)
20
15
  #
21
16
  # @option params [required, String] :to
@@ -25,44 +20,10 @@ module Vonage
25
20
  # @option params [required, Hash] **message
26
21
  # The Vonage Message object to use for this message.
27
22
  #
28
- # @see https://developer.vonage.com/api/messages#SendMessage
23
+ # @see https://developer.vonage.com/api/messages-olympus#SendMessage
29
24
  #
30
- def send(to:, from:, channel:, message_type:, failover: nil, **message)
31
- params = { to: to, from: from, channel: channel, message_type: message_type }.merge(message)
32
-
33
- if failover
34
- raise ArgumentError.new("`failover` must be an array") unless failover.is_a?(Array)
35
- raise ArgumentError.new("`failover` must not be empty") if failover.empty?
36
- raise ArgumentError.new("`failover` must contain only Hashes") unless failover.all?(Hash)
37
- params[:failover] = failover
38
- end
39
-
25
+ def send(params)
40
26
  request('/v1/messages', params: params, type: Post)
41
27
  end
42
-
43
- # Update a Message Object.
44
- #
45
- # @example
46
- # message = client.messaging.update(message_uuid: "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab", status: "read")
47
- #
48
- # @option params [required, String] :message_uuid. the UUID of the message to update.
49
- #
50
- # `:message_uuid` is always required. Other parameters will depend on the message channel and the specific action being performed.
51
- # @see https://developer.vonage.com/api/messages#UpdateMessage
52
- #
53
- def update(message_uuid:, **params)
54
- request("/v1/messages/#{message_uuid}", params: params, type: Patch)
55
- end
56
-
57
- # Validate a JSON Web Token from a Messages API Webhook.
58
- #
59
- # @param [String, required] :token The JWT from the Webhook's Authorization header
60
- # @param [String, optional] :signature_secret The account signature secret. Required, unless `signature_secret`
61
- # is set in `Config`
62
- #
63
- # @return [Boolean] true, if the JWT is verified, false otherwise
64
- def verify_webhook_token(token:, signature_secret: @config.signature_secret)
65
- JWT.verify_hs256_signature(token: token, signature_secret: signature_secret)
66
- end
67
28
  end
68
29
  end
@@ -1,9 +1,6 @@
1
1
  # typed: true
2
2
  # frozen_string_literal: true
3
-
4
3
  require 'net/http'
5
- require 'net/http/persistent'
6
- require 'net/http/post/multipart'
7
4
  require 'json'
8
5
 
9
6
  module Vonage
@@ -13,7 +10,8 @@ module Vonage
13
10
 
14
11
  @host = set_host
15
12
 
16
- @http = Net::HTTP::Persistent.new
13
+ @http = Net::HTTP.new(@host, Net::HTTP.https_default_port, p_addr = nil)
14
+ @http.use_ssl = true
17
15
 
18
16
  @config.http.set(@http) unless @config.http.nil?
19
17
  end
@@ -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
@@ -57,33 +55,33 @@ module Vonage
57
55
  Post = Net::HTTP::Post
58
56
  Delete = Net::HTTP::Delete
59
57
 
60
- def build_request(path:, type: Get, params: {}, auth_data: nil)
58
+ def build_request(path:, type: Get, params: {})
61
59
  authentication = self.class.authentication.new(@config)
62
- authentication.update(params, auth_data)
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
68
66
 
67
+ # Set BasicAuth if neeeded
68
+ authentication.update(uri)
69
+
69
70
  # instantiate request
70
71
  request = type.new(uri)
71
72
 
72
73
  # set headers
73
- request["User-Agent"] = UserAgent.string(
74
- @config.app_name,
75
- @config.app_version
76
- )
77
- request["Accept"] = "application/json"
78
- 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
79
79
 
80
- # Set Authorization header if needed
81
- authentication.update(request, auth_data)
80
+ # Set BearerToken if needed
81
+ authentication.update(request)
82
82
 
83
83
  # set body
84
- if type.const_get(:REQUEST_HAS_BODY)
85
- self.class.request_body.update(request, params)
86
- end
84
+ self.class.request_body.update(request, params) if type.const_get(:REQUEST_HAS_BODY)
87
85
 
88
86
  request
89
87
  end
@@ -91,8 +89,7 @@ module Vonage
91
89
  def make_request!(request, &block)
92
90
  logger.log_request_info(request)
93
91
 
94
- uri = URI("https://" + @host + request.path)
95
- response = @http.request(uri, request, &block)
92
+ response = @http.request(request, &block)
96
93
 
97
94
  logger.log_response_info(response, @host)
98
95
 
@@ -103,32 +100,17 @@ module Vonage
103
100
  response
104
101
  end
105
102
 
106
- def request(path, params: nil, type: Get, response_class: Response, auth_data: nil, &block)
107
- auto_advance =
108
- (
109
- if !params.nil? && params.key?(:auto_advance)
110
- params[:auto_advance]
111
- else
112
- false
113
- end
114
- )
103
+ def request(path, params: nil, type: Get, response_class: Response, &block)
104
+ auto_advance = !params.nil? && params.key?(:auto_advance) ? params[:auto_advance] : false
115
105
 
116
- params =
117
- params.tap { |params| params.delete(:auto_advance) } if !params.nil? &&
118
- params.key?(:auto_advance)
106
+ params = params.tap { |params| params.delete(:auto_advance) } if !params.nil? && params.key?(:auto_advance)
119
107
 
120
- request = build_request(path: path, params: params || {}, type: type, auth_data: auth_data)
108
+ request = build_request(path: path, params: params || {}, type: type)
121
109
 
122
110
  response = make_request!(request, &block)
123
111
 
124
112
  if auto_advance
125
- iterable_request(
126
- path,
127
- response: response,
128
- response_class: response_class,
129
- params: params,
130
- &block
131
- )
113
+ iterable_request(path, response: response, response_class: response_class, params: params, &block)
132
114
  else
133
115
  return if block
134
116
 
@@ -136,59 +118,22 @@ module Vonage
136
118
  end
137
119
  end
138
120
 
139
- def multipart_post_request(path, filepath:, file_name:, mime_type:, params: {}, override_uri: nil, no_auth: false, response_class: Response, auth_data: nil, &block)
140
- authentication = self.class.authentication.new(@config) unless no_auth
141
-
142
- uri = override_uri ? URI(override_uri) : URI('https://' + @host + path)
143
-
144
- http = Net::HTTP.new(uri.host, Net::HTTP.https_default_port, p_addr = nil)
145
- http.use_ssl = true
146
- http.set_debug_output($stdout)
147
-
148
- response = File.open(filepath) do |file|
149
- request = Net::HTTP::Post::Multipart.new(
150
- uri,
151
- params.merge(file: Multipart::Post::UploadIO.new(file, mime_type, file_name))
152
- )
153
-
154
- request['User-Agent'] = UserAgent.string(@config.app_name, @config.app_version)
155
-
156
- # Set Authorization header if needed
157
- authentication.update(request, auth_data) unless no_auth
158
-
159
- logger.log_request_info(request)
160
-
161
- http.request(request, &block)
162
- end
163
-
164
- logger.log_response_info(response, @host)
165
-
166
- return if block
167
-
168
- logger.debug(response.body) if response.body
169
-
170
- parse(response, response_class)
171
- end
172
-
173
121
  def iterable_request(path, response: nil, response_class: nil, params: {}, &block)
174
122
  json_response = ::JSON.parse(response.body)
175
123
  response = parse(response, response_class)
176
124
  remainder = remaining_count(json_response)
177
125
 
178
126
  while remainder > 0
179
- params = { page_size: json_response["page_size"] }
180
-
181
- if json_response["record_index"] && json_response["record_index"] == 0
182
- params[:record_index] = json_response["page_size"]
183
- elsif json_response["record_index"] &&
184
- json_response["record_index"] != 0
185
- params[:record_index] = (
186
- json_response["record_index"] + json_response["page_size"]
187
- )
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'])
188
133
  end
189
134
 
190
- if json_response["total_pages"]
191
- params[:page] = json_response["page"] + 1
135
+ if json_response['total_pages']
136
+ params[:page] = json_response['page'] + 1
192
137
  end
193
138
 
194
139
  request = build_request(path: path, type: Get, params: params)
@@ -199,15 +144,11 @@ module Vonage
199
144
  json_response = ::JSON.parse(paginated_response.body)
200
145
  remainder = remaining_count(json_response)
201
146
 
202
- if response.respond_to?("_embedded")
203
- collection_name = collection_name(response["_embedded"])
204
- response["_embedded"][collection_name].push(
205
- *next_response["_embedded"][collection_name]
206
- )
147
+ if response.respond_to?('_embedded')
148
+ collection_name = collection_name(response['_embedded'])
149
+ response['_embedded'][collection_name].push(*next_response['_embedded'][collection_name])
207
150
  else
208
- response[collection_name(response)].push(
209
- *next_response[collection_name(next_response)]
210
- )
151
+ response[collection_name(response)].push(*next_response[collection_name(next_response)])
211
152
  end
212
153
  end
213
154
 
@@ -215,51 +156,43 @@ module Vonage
215
156
  end
216
157
 
217
158
  def remaining_count(params)
218
- if params.key?("total_pages")
219
- params["total_pages"] - params["page"]
220
- elsif params.key?("count")
221
- params["count"] -
222
- (
223
- if params["record_index"] == 0
224
- params["page_size"]
225
- else
226
- (params["record_index"] + params["page_size"])
227
- end
228
- )
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']))
229
163
  else
230
164
  0
231
165
  end
232
166
  end
233
167
 
234
168
  def collection_name(params)
235
- @collection_name ||=
236
- case
237
- when params.respond_to?("calls")
238
- "calls"
239
- when params.respond_to?("users")
240
- "users"
241
- when params.respond_to?("legs")
242
- "legs"
243
- when params.respond_to?("data")
244
- "data"
245
- when params.respond_to?("conversations")
246
- "conversations"
247
- when params.respond_to?("applications")
248
- "applications"
249
- when params.respond_to?("records")
250
- "records"
251
- when params.respond_to?("reports")
252
- "reports"
253
- when params.respond_to?("networks")
254
- "networks"
255
- when params.respond_to?("countries")
256
- "countries"
257
- when params.respond_to?("media")
258
- "media"
259
- when params.respond_to?("numbers")
260
- "numbers"
261
- when params.respond_to?("events")
262
- "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'
263
196
  else
264
197
  params.entity.attributes.keys[0].to_s
265
198
  end
@@ -270,7 +203,7 @@ module Vonage
270
203
  when Net::HTTPNoContent
271
204
  response_class.new(nil, response)
272
205
  when Net::HTTPSuccess
273
- if response['Content-Type'] && response['Content-Type'].split(';').first == 'application/json' && !response.body.empty?
206
+ if response['Content-Type'].split(';').first == 'application/json'
274
207
  entity = ::JSON.parse(response.body, object_class: Vonage::Entity)
275
208
 
276
209
  response_class.new(entity, response)
@@ -294,8 +227,6 @@ module Vonage
294
227
  @config.rest_host
295
228
  when :video_host
296
229
  @config.video_host
297
- when :vonage_host
298
- @config.vonage_host
299
230
  else
300
231
  @config.api_host
301
232
  end