vonage 7.18.0 → 8.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -271
  3. data/lib/vonage/applications.rb +4 -12
  4. data/lib/vonage/client.rb +4 -32
  5. data/lib/vonage/client_error.rb +1 -1
  6. data/lib/vonage/config.rb +3 -7
  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 +7 -1
  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 +58 -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 +187 -0
  22. data/lib/vonage/video/list_response.rb +11 -0
  23. data/lib/vonage/video/moderation.rb +73 -0
  24. data/lib/vonage/video/signals.rb +55 -0
  25. data/lib/vonage/video/streams.rb +76 -0
  26. data/lib/vonage/video.rb +91 -0
  27. data/lib/vonage/voice/actions/connect.rb +3 -27
  28. data/lib/vonage/voice/actions/pay.rb +107 -0
  29. data/lib/vonage/voice/actions/talk.rb +2 -11
  30. data/lib/vonage/voice/talk.rb +1 -11
  31. data/lib/vonage/voice.rb +0 -22
  32. data/lib/vonage.rb +0 -1
  33. data/vonage.gemspec +1 -2
  34. metadata +14 -59
  35. data/lib/vonage/api_error.rb +0 -33
  36. data/lib/vonage/meetings/applications.rb +0 -25
  37. data/lib/vonage/meetings/dial_in_numbers/list_response.rb +0 -11
  38. data/lib/vonage/meetings/dial_in_numbers.rb +0 -23
  39. data/lib/vonage/meetings/recordings.rb +0 -36
  40. data/lib/vonage/meetings/rooms/list_response.rb +0 -11
  41. data/lib/vonage/meetings/rooms.rb +0 -155
  42. data/lib/vonage/meetings/sessions/list_response.rb +0 -11
  43. data/lib/vonage/meetings/sessions.rb +0 -28
  44. data/lib/vonage/meetings/themes/list_response.rb +0 -11
  45. data/lib/vonage/meetings/themes.rb +0 -218
  46. data/lib/vonage/meetings.rb +0 -38
  47. data/lib/vonage/proactive_connect/events/list_response.rb +0 -11
  48. data/lib/vonage/proactive_connect/events.rb +0 -68
  49. data/lib/vonage/proactive_connect/item.rb +0 -104
  50. data/lib/vonage/proactive_connect/items/file_response.rb +0 -32
  51. data/lib/vonage/proactive_connect/items/list_response.rb +0 -11
  52. data/lib/vonage/proactive_connect/items.rb +0 -107
  53. data/lib/vonage/proactive_connect/list.rb +0 -168
  54. data/lib/vonage/proactive_connect/lists/list_response.rb +0 -11
  55. data/lib/vonage/proactive_connect/lists.rb +0 -35
  56. data/lib/vonage/proactive_connect.rb +0 -33
  57. data/lib/vonage/subaccounts/balance_transfers/list_response.rb +0 -11
  58. data/lib/vonage/subaccounts/credit_transfers/list_response.rb +0 -11
  59. data/lib/vonage/subaccounts/list_response.rb +0 -15
  60. data/lib/vonage/subaccounts.rb +0 -203
  61. data/lib/vonage/users/list_response.rb +0 -11
  62. data/lib/vonage/users.rb +0 -156
  63. data/lib/vonage/verify2/channels/email.rb +0 -38
  64. data/lib/vonage/verify2/channels/silent_auth.rb +0 -32
  65. data/lib/vonage/verify2/channels/sms.rb +0 -39
  66. data/lib/vonage/verify2/channels/voice.rb +0 -32
  67. data/lib/vonage/verify2/channels/whats_app.rb +0 -38
  68. data/lib/vonage/verify2/channels/whats_app_interactive.rb +0 -32
  69. data/lib/vonage/verify2/start_verification_options.rb +0 -62
  70. data/lib/vonage/verify2/workflow.rb +0 -39
  71. data/lib/vonage/verify2/workflow_builder.rb +0 -25
  72. data/lib/vonage/verify2.rb +0 -93
@@ -1,38 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
- require 'phonelib'
4
-
5
- module Vonage
6
- class Verify2::Channels::Email
7
-
8
- attr_reader :channel, :to, :from
9
-
10
- def initialize(to:, from: nil)
11
- self.channel = 'email'
12
- self.to = to
13
- self.from = from if from
14
- end
15
-
16
- def to=(to)
17
- # TODO: add validation
18
- @to = to
19
- end
20
-
21
- def from=(from)
22
- # TODO: add validation
23
- @from = from
24
- end
25
-
26
- def to_h
27
- hash = Hash.new
28
- self.instance_variables.each do |ivar|
29
- hash[ivar.to_s.delete("@").to_sym] = self.instance_variable_get(ivar)
30
- end
31
- hash
32
- end
33
-
34
- private
35
-
36
- attr_writer :channel
37
- end
38
- end
@@ -1,32 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
- require 'phonelib'
4
-
5
- module Vonage
6
- class Verify2::Channels::SilentAuth
7
-
8
- attr_reader :channel, :to
9
-
10
- def initialize(to:)
11
- self.channel = 'silent_auth'
12
- self.to = to
13
- end
14
-
15
- def to=(to)
16
- raise ArgumentError, "Invalid 'to' value #{to}. Expected to be in E.164 format" unless Phonelib.parse(to.to_i).valid?
17
- @to = to
18
- end
19
-
20
- def to_h
21
- hash = Hash.new
22
- self.instance_variables.each do |ivar|
23
- hash[ivar.to_s.delete("@").to_sym] = self.instance_variable_get(ivar)
24
- end
25
- hash
26
- end
27
-
28
- private
29
-
30
- attr_writer :channel
31
- end
32
- end
@@ -1,39 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
- require 'phonelib'
4
-
5
- module Vonage
6
- class Verify2::Channels::SMS
7
- APP_HASH_LENGTH = 11
8
-
9
- attr_reader :channel, :to, :app_hash
10
-
11
- def initialize(to:, app_hash: nil)
12
- self.channel = 'sms'
13
- self.to = to
14
- self.app_hash = app_hash if app_hash
15
- end
16
-
17
- def to=(to)
18
- raise ArgumentError, "Invalid 'to' value #{to}. Expected to be in E.164 format" unless Phonelib.parse(to).valid?
19
- @to = to
20
- end
21
-
22
- def app_hash=(app_hash)
23
- raise ArgumentError, "Invalid 'app_hash' value #{app_hash}. Length must be #{APP_HASH_LENGTH}" unless app_hash.length == APP_HASH_LENGTH
24
- @app_hash = app_hash
25
- end
26
-
27
- def to_h
28
- hash = Hash.new
29
- self.instance_variables.each do |ivar|
30
- hash[ivar.to_s.delete("@").to_sym] = self.instance_variable_get(ivar)
31
- end
32
- hash
33
- end
34
-
35
- private
36
-
37
- attr_writer :channel
38
- end
39
- end
@@ -1,32 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
- require 'phonelib'
4
-
5
- module Vonage
6
- class Verify2::Channels::Voice
7
-
8
- attr_reader :channel, :to
9
-
10
- def initialize(to:)
11
- self.channel = 'voice'
12
- self.to = to
13
- end
14
-
15
- def to=(to)
16
- raise ArgumentError, "Invalid 'to' value #{to}. Expected to be in E.164 format" unless Phonelib.parse(to.to_i).valid?
17
- @to = to
18
- end
19
-
20
- def to_h
21
- hash = Hash.new
22
- self.instance_variables.each do |ivar|
23
- hash[ivar.to_s.delete("@").to_sym] = self.instance_variable_get(ivar)
24
- end
25
- hash
26
- end
27
-
28
- private
29
-
30
- attr_writer :channel
31
- end
32
- end
@@ -1,38 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
- require 'phonelib'
4
-
5
- module Vonage
6
- class Verify2::Channels::WhatsApp
7
-
8
- attr_reader :channel, :to, :from
9
-
10
- def initialize(to:, from: nil)
11
- self.channel = 'whatsapp'
12
- self.to = to
13
- self.from = from if from
14
- end
15
-
16
- def to=(to)
17
- raise ArgumentError, "Invalid 'to' value #{to}. Expected to be in E.164 format" unless Phonelib.parse(to.to_i).valid?
18
- @to = to
19
- end
20
-
21
- def from=(from)
22
- raise ArgumentError, "Invalid 'from' value #{from}. Expected to be in E.164 format" unless Phonelib.parse(from.to_i).valid?
23
- @from = from
24
- end
25
-
26
- def to_h
27
- hash = Hash.new
28
- self.instance_variables.each do |ivar|
29
- hash[ivar.to_s.delete("@").to_sym] = self.instance_variable_get(ivar)
30
- end
31
- hash
32
- end
33
-
34
- private
35
-
36
- attr_writer :channel
37
- end
38
- end
@@ -1,32 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
- require 'phonelib'
4
-
5
- module Vonage
6
- class Verify2::Channels::WhatsAppInteractive
7
-
8
- attr_reader :channel, :to
9
-
10
- def initialize(to:)
11
- self.channel = 'whatsapp_interactive'
12
- self.to = to
13
- end
14
-
15
- def to=(to)
16
- raise ArgumentError, "Invalid 'to' value #{to}. Expected to be in E.164 format" unless Phonelib.parse(to.to_i).valid?
17
- @to = to
18
- end
19
-
20
- def to_h
21
- hash = Hash.new
22
- self.instance_variables.each do |ivar|
23
- hash[ivar.to_s.delete("@").to_sym] = self.instance_variable_get(ivar)
24
- end
25
- hash
26
- end
27
-
28
- private
29
-
30
- attr_writer :channel
31
- end
32
- end
@@ -1,62 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Verify2::StartVerificationOptions
6
- VALID_OPTS = [:locale, :channel_timeout, :client_ref, :code_length, :code, :fraud_check].freeze
7
-
8
- MIN_CHANNEL_TIMEOUT, MAX_CHANNEL_TIMEOUT = [60, 900]
9
-
10
- MIN_CODE_LENGTH, MAX_CODE_LENGTH = [4, 10]
11
-
12
- attr_reader(*VALID_OPTS)
13
-
14
- def initialize(**opts)
15
- VALID_OPTS.each do |opt|
16
- send("#{opt}=", opts[opt]) unless opts[opt].nil?
17
- end
18
- end
19
-
20
- def locale=(locale)
21
- @locale = locale
22
- end
23
-
24
- def channel_timeout=(channel_timeout)
25
- unless channel_timeout.between?(MIN_CHANNEL_TIMEOUT, MAX_CHANNEL_TIMEOUT)
26
- raise ArgumentError, "Invalid 'channel_timeout' #{channel_timeout}. Must be between #{MIN_CHANNEL_TIMEOUT} and #{MAX_CHANNEL_TIMEOUT} (inclusive)"
27
- end
28
-
29
- @channel_timeout = channel_timeout
30
- end
31
-
32
- def client_ref=(client_ref)
33
- @client_ref = client_ref
34
- end
35
-
36
- def code_length=(code_length)
37
- unless code_length.between?(MIN_CODE_LENGTH, MAX_CODE_LENGTH)
38
- raise ArgumentError, "Invalid 'code_length' #{code_length}. Must be between #{MIN_CODE_LENGTH} and #{MAX_CODE_LENGTH} (inclusive)"
39
- end
40
-
41
- @code_length = code_length
42
- end
43
-
44
- def code=(code)
45
- @code = code
46
- end
47
-
48
- def fraud_check=(fraud_check)
49
- raise ArgumentError, "Invalid 'fraud_check' #{fraud_check}. Must be `false`" unless fraud_check == false
50
-
51
- @fraud_check = fraud_check
52
- end
53
-
54
- def to_h
55
- hash = Hash.new
56
- self.instance_variables.each do |ivar|
57
- hash[ivar.to_s.delete("@").to_sym] = self.instance_variable_get(ivar)
58
- end
59
- hash
60
- end
61
- end
62
- end
@@ -1,39 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Verify2::Workflow
6
- CHANNELS = {
7
- sms: Verify2::Channels::SMS,
8
- whatsapp: Verify2::Channels::WhatsApp,
9
- whatsapp_interactive: Verify2::Channels::WhatsAppInteractive,
10
- voice: Verify2::Channels::Voice,
11
- email: Verify2::Channels::Email,
12
- silent_auth: Verify2::Channels::SilentAuth
13
- }
14
-
15
- CHANNELS.keys.each do |method|
16
- define_method method do |attributes|
17
- CHANNELS[method].new(**attributes)
18
- end
19
- end
20
-
21
- def self.method_missing(method)
22
- raise ClientError.new("Workflow channel must be one of the valid options. Please refer to https://developer.vonage.com/en/api/verify.v2#newRequest for a complete list.")
23
- end
24
-
25
- attr_reader :list
26
-
27
- def initialize
28
- @list = []
29
- end
30
-
31
- def <<(workflow)
32
- list << workflow
33
- end
34
-
35
- def hashified_list
36
- list.map(&:to_h)
37
- end
38
- end
39
- end
@@ -1,25 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Verify2::WorkflowBuilder
6
-
7
- def self.build
8
- builder = self.new
9
- yield builder if block_given?
10
- builder.workflow
11
- end
12
-
13
- attr_reader :workflow
14
-
15
- def initialize
16
- @workflow = Vonage::Verify2::Workflow.new
17
- end
18
-
19
- Vonage::Verify2::Workflow::CHANNELS.keys.each do |channel|
20
- define_method "add_#{channel.to_s}" do |args|
21
- workflow << workflow.send(channel, **args)
22
- end
23
- end
24
- end
25
- end
@@ -1,93 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Verify2 < Namespace
6
- self.authentication = BearerToken
7
-
8
- self.request_body = JSON
9
-
10
- # Request a verification be sent to a user.
11
- #
12
- # @example
13
- # verification_request = verify.start_verification(
14
- # brand: 'Acme',
15
- # workflow: [{channel: 'sms', to: '447000000000'}],
16
- # code_length: 6
17
- # )
18
- #
19
- # @param [required, String] :brand The brand that is sending the verification request
20
- #
21
- # @param [required, Array<Hash>] :workflow An array of hashes for channels in the workflow
22
- #
23
- # @param [optional, Hash] opts the options for the verification request.
24
- # @option opts [Integer] :code_length The length of the one-time code provided to the end-user
25
- # @option opts [String] :code An optional alphanumeric custom code to use instead of an auto-generated code
26
- # @option opts [String] :locale The language to use for the verification message (where applicable)
27
- # @option opts [Integer] :channel_timeout Wait time in seconds before trying the next channel in the workflow
28
- # @option opts [String] :client_ref Reference to be included in callbacks
29
- # @option opts [Boolean] If used, must be set to `false`. Will bypass a network block for a single Verify V2 request
30
- #
31
- # @return Vonage::Response
32
- # @see https://developer.vonage.com/en/api/verify.v2#newRequest
33
- #
34
- def start_verification(brand:, workflow:, **opts)
35
- raise ArgumentError, ':workflow must be an Array' unless workflow.is_a?(Array)
36
- raise ArgumentError, ':workflow must not be empty' if workflow.empty?
37
-
38
- request('/v2/verify/', params: opts.merge(brand: brand, workflow: workflow), type: Post)
39
- end
40
-
41
- # Check a supplied code against a request to see if it is valid.
42
- #
43
- # @example
44
- # code_check = verify.check_code(request_id: '7e8c5965-0a3f-44df-8a14-f1486209d8a2', code: '1234')
45
- #
46
- # @param [required, String] :request_id The request_id of the verification request being checked
47
- #
48
- # @param [required, String] :code The code supplied to the end-user by the verification request
49
- #
50
- # @see https://developer.vonage.com/en/api/verify.v2#checkCode
51
- #
52
- def check_code(request_id:, code:)
53
- request('/v2/verify/' + request_id, params: {code: code}, type: Post)
54
- end
55
-
56
- # Cancel a verifiction. If a verification request is still active, calling this method aborts the workflow.
57
- #
58
- # @example
59
- # verify.cancel_verification_request(request_id: '7e8c5965-0a3f-44df-8a14-f1486209d8a2')
60
- #
61
- # @param [required, String] :request_id The request_id of the verification request to be cancelled
62
- #
63
- # @see https://developer.vonage.com/en/api/verify.v2#cancelRequest
64
- #
65
- def cancel_verification_request(request_id:)
66
- request('/v2/verify/' + request_id, type: Delete)
67
- end
68
-
69
- # Instantiate a new Vonage::Verify2::StartVerificationOptions object
70
- #
71
- # @param [optional, Hash] opts the options for the verification request.
72
- # @option opts [Integer] :code_length The length of the one-time code provided to the end-user
73
- # @option opts [String] :code An optional alphanumeric custom code to use instead of an auto-generated code
74
- # @option opts [String] :locale The language to use for the verification message (where applicable)
75
- # @option opts [Integer] :channel_timeout Wait time in seconds before trying the next channel in the workflow
76
- # @option opts [String] :client_ref Reference to be included in callbacks
77
- # @option opts [Boolean] If used, must be set to `false`. Will bypass a network block for a single Verify V2 request
78
- #
79
- def start_verification_options(**opts)
80
- StartVerificationOptions.new(**opts)
81
- end
82
-
83
- # Instantiate a new Vonage::Verify2::Workflow object
84
- def workflow
85
- Workflow.new
86
- end
87
-
88
- # Return the Vonage::Verify2::WorkflowBuilder class
89
- def workflow_builder
90
- WorkflowBuilder.itself
91
- end
92
- end
93
- end