vonage 7.30.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 (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 -9
  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 -5
  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
@@ -13,6 +13,8 @@ module Vonage
13
13
 
14
14
  # Get a list of archives for a specified Vonage application.
15
15
  #
16
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
17
+ #
16
18
  # @param [optional, Integer] :offset
17
19
  #
18
20
  # @param [optional, Integer] :count
@@ -25,41 +27,47 @@ module Vonage
25
27
  #
26
28
  # @see TODO: add docs link
27
29
  #
28
- def list(**params)
29
- request('/v2/project/' + @config.application_id + '/archive', params: params, response_class: ListResponse)
30
+ def list(application_id: @config.application_id, **params)
31
+ # TODO: raise error if application_id is nil
32
+
33
+ request('/v2/project/' + application_id + '/archive', params: params, response_class: Video::ListResponse)
30
34
  end
31
35
 
32
36
  # Return information for specified archive.
33
37
  #
38
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
39
+ #
34
40
  # @param [required, String] archive_id
35
41
  #
36
42
  # @return [Response]
37
43
  #
38
44
  # @see TODO: add docs link
39
45
  #
40
- def info(archive_id:)
41
- request('/v2/project/' + @config.application_id + '/archive/' + archive_id)
46
+ def info(application_id: @config.application_id, archive_id:)
47
+ # TODO: raise error if application_id is nil
48
+
49
+ request('/v2/project/' + application_id + '/archive/' + archive_id)
42
50
  end
43
51
 
44
52
  # Create a new archive.
45
53
  #
54
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
55
+ #
46
56
  # @param [required, String] :session_id
47
57
  #
48
- # @param [optional, String] :has_audio
58
+ # @param [optional, String] :hasAudio
49
59
  #
50
- # @param [optional, String] :has_video
60
+ # @param [optional, String] :hasVideo
51
61
  #
52
62
  # @param [optional, String] :name
53
63
  #
54
- # @param [optional, String] :output_mode
64
+ # @param [optional, String] :outputMode
55
65
  #
56
66
  # @param [optional, String] :resolution
57
67
  #
58
- # @param [optional, String] :stream_mode
68
+ # @param [optional, String] :streamMode
59
69
  #
60
- # @param [optional, String] :multi_archive_tag
61
- #
62
- # @param [optional, String] :max_bitrate
70
+ # @param [optional, String] :multiArchiveTag
63
71
  #
64
72
  # @param [optional, Hash] :layout
65
73
  #
@@ -73,39 +81,52 @@ module Vonage
73
81
  #
74
82
  # @see TODO: add docs link
75
83
  #
76
- def start(session_id:, **params)
77
- request('/v2/project/' + @config.application_id + '/archive', params: camelcase(params.merge(session_id: session_id)), type: Post)
84
+ def start(application_id: @config.application_id, **params)
85
+ # TODO: raise error if application_id is nil
86
+ # TODO: raise error if session_id is nil
87
+
88
+ request('/v2/project/' + application_id + '/archive', params: params, type: Post)
78
89
  end
79
90
 
80
91
  # Stop recording a specified archive.
81
92
  #
93
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
94
+ #
82
95
  # @param [required, String] archive_id
83
96
  #
84
97
  # @return [Response]
85
98
  #
86
99
  # @see TODO: add docs link
87
100
  #
88
- def stop(archive_id:)
89
- request('/v2/project/' + @config.application_id + '/archive/' + archive_id + '/stop', type: Post)
101
+ def stop(application_id: @config.application_id, archive_id:)
102
+ # TODO: raise error if application_id is nil
103
+
104
+ request('/v2/project/' + application_id + '/archive/' + archive_id + '/stop', type: Post)
90
105
  end
91
106
 
92
107
  # Delete a specified archive.
93
108
  #
109
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
110
+ #
94
111
  # @param [required, String] archive_id
95
112
  #
96
113
  # @return [Response]
97
114
  #
98
115
  # @see TODO: add docs link
99
116
  #
100
- def delete(archive_id:)
101
- request('/v2/project/' + @config.application_id + '/archive/' + archive_id, type: Delete)
117
+ def delete(application_id: @config.application_id, archive_id:)
118
+ # TODO: raise error if application_id is nil
119
+
120
+ request('/v2/project/' + application_id + '/archive/' + archive_id, type: Delete)
102
121
  end
103
122
 
104
123
  # Add a stream to a composed archive that was started with the streamMode set to "manual".
105
124
  #
125
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
126
+ #
106
127
  # @param [required, String] archive_id
107
128
  #
108
- # @param [required, String] stream_id The ID of the stream to be added
129
+ # @param [required, String] add_stream The ID of the stream to be added
109
130
  #
110
131
  # @param [optional, Boolean] has_audio
111
132
  #
@@ -115,26 +136,36 @@ module Vonage
115
136
  #
116
137
  # @see TODO: add docs link
117
138
  #
118
- def add_stream(archive_id:, stream_id:, **params)
119
- request('/v2/project/' + @config.application_id + '/archive/' + archive_id + '/streams', params: camelcase(params.merge(addStream: stream_id)), type: Patch)
139
+ def add_stream(application_id: @config.application_id, archive_id:, **params)
140
+ # TODO: raise error if application_id is nil
141
+ # TODO: raise error if add_stream is nil
142
+
143
+ request('/v2/project/' + application_id + '/archive/' + archive_id + '/streams', params: camelcase(params), type: Patch)
120
144
  end
121
145
 
122
146
  # Remove a stream from a composed archive that was started with the streamMode set to "manual".
123
147
  #
148
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
149
+ #
124
150
  # @param [required, String] archive_id
125
151
  #
126
- # @param [required, String] stream_id The ID of the stream to be removed
152
+ # @param [required, String] remove_stream The ID of the stream to be removed
127
153
  #
128
154
  # @return [Response]
129
155
  #
130
156
  # @see TODO: add docs link
131
157
  #
132
- def remove_stream(archive_id:, stream_id:)
133
- request('/v2/project/' + @config.application_id + '/archive/' + archive_id + '/streams', params: {removeStream: stream_id}, type: Patch)
158
+ def remove_stream(application_id: @config.application_id, archive_id:, **params)
159
+ # TODO: raise error if application_id is nil
160
+ # TODO: raise error if remove_stream is nil
161
+
162
+ request('/v2/project/' + application_id + '/archive/' + archive_id + '/streams', params: camelcase(params), type: Patch)
134
163
  end
135
164
 
136
165
  # Change the layout of a composed archive while it is being recorded.
137
166
  #
167
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
168
+ #
138
169
  # @param [required, String] archive_id
139
170
  #
140
171
  # @param [optional, String] type
@@ -147,8 +178,10 @@ module Vonage
147
178
  #
148
179
  # @see TODO: add docs link
149
180
  #
150
- def change_layout(archive_id:, **params)
151
- request('/v2/project/' + @config.application_id + '/archive/' + archive_id + '/layout', params: camelcase(params), type: Put)
181
+ def change_layout(application_id: @config.application_id, archive_id:, **params)
182
+ # TODO: raise error if application_id is nil
183
+
184
+ request('/v2/project/' + application_id + '/archive/' + archive_id + '/layout', params: camelcase(params), type: Put)
152
185
  end
153
186
  end
154
187
  end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+
3
+ class Vonage::Video::ListResponse < Vonage::Response
4
+ include Enumerable
5
+
6
+ def each
7
+ return enum_for(:each) unless block_given?
8
+
9
+ @entity._embedded.calls.each { |item| yield item }
10
+ end
11
+ end
@@ -11,6 +11,8 @@ module Vonage
11
11
 
12
12
  # Force a client to disconnect from a session.
13
13
  #
14
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
15
+ #
14
16
  # @param [required, String] :session_id
15
17
  #
16
18
  # @param [required, String] :connection_id The connection ID of the specific participant to be disconnected from the session.
@@ -19,12 +21,16 @@ module Vonage
19
21
  #
20
22
  # @see TODO: add docs link
21
23
  #
22
- def force_disconnect(session_id:, connection_id:)
23
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/connection/' + connection_id, type: Delete)
24
+ def force_disconnect(application_id: @config.application_id, session_id:, connection_id:)
25
+ # TODO: raise error if application_id is nil
26
+
27
+ request('/v2/project/' + application_id + '/session/' + session_id + '/connection/' + connection_id, type: Delete)
24
28
  end
25
29
 
26
30
  # Force mute a specific publisher stream in a session.
27
31
  #
32
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
33
+ #
28
34
  # @param [required, String] :session_id
29
35
  #
30
36
  # @param [required, String] :stream_id The stream ID of the specific stream to be muted.
@@ -33,26 +39,35 @@ module Vonage
33
39
  #
34
40
  # @see TODO: add docs link
35
41
  #
36
- def mute_single_stream(session_id:, stream_id:)
37
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/stream/' + stream_id + '/mute', type: Post)
42
+ def mute_single_stream(application_id: @config.application_id, session_id:, stream_id:)
43
+ application_id ||= @config.application_id
44
+ # TODO: raise error if application_id is nil
45
+
46
+ request('/v2/project/' + application_id + '/session/' + session_id + '/stream/' + stream_id + '/mute', type: Post)
38
47
  end
39
48
 
40
49
  # Force mute all publisher stream for a specific session.
41
50
  #
51
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
52
+ #
42
53
  # @param [required, String] :session_id
43
54
  #
44
55
  # @param [required, String] :active
45
56
  #
46
- # @param [required, Array<String>] :excludedStreamIds
57
+ # @param [required, Array<String>] :excludedStreamIds
47
58
  #
48
59
  # @return [Response]
49
60
  #
50
61
  # @see TODO: add docs link
51
62
  #
52
- def mute_multiple_streams(session_id:, **params)
53
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/mute', params: params, type: Post)
63
+ def mute_multiple_streams(application_id: @config.application_id, session_id:, **params)
64
+ # TODO: raise error if application_id is nil
65
+ # TODO: camelcase params
66
+
67
+ request('/v2/project/' + application_id + '/session/' + session_id + '/mute', params: params, type: Post)
54
68
  end
55
69
 
56
70
  # TODO: add disable_force_mute ??
57
71
  end
58
72
  end
73
+
@@ -25,8 +25,10 @@ module Vonage
25
25
  #
26
26
  # @see TODO: add docs link
27
27
  #
28
- def send_to_one(session_id:, connection_id:, **params)
29
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/connection/' + connection_id + '/signal', params: params, type: Post)
28
+ def send_to_one(application_id: @config.application_id, session_id:, connection_id:, **params)
29
+ # TODO: raise error if application_id is nil
30
+
31
+ request('/v2/project/' + application_id + '/session/' + session_id + '/connection/' + connection_id + '/signal', params: params, type: Post)
30
32
  end
31
33
 
32
34
  # Send a signal to all participants in an active Vonage Video session.
@@ -43,8 +45,11 @@ module Vonage
43
45
  #
44
46
  # @see TODO: add docs link
45
47
  #
46
- def send_to_all(session_id:, **params)
47
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/signal', params: params, type: Post)
48
+ def send_to_all(application_id: @config.application_id, session_id:, **params)
49
+ # TODO: raise error if application_id is nil
50
+
51
+ request('/v2/project/' + application_id + '/session/' + session_id + '/signal', params: params, type: Post)
48
52
  end
49
53
  end
50
54
  end
55
+
@@ -22,8 +22,10 @@ module Vonage
22
22
  #
23
23
  # @see TODO: add docs link
24
24
  #
25
- def list(session_id:)
26
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/stream', response_class: ListResponse)
25
+ def list(application_id: @config.application_id, session_id:)
26
+ # TODO: raise error if application_id is nil
27
+
28
+ request('/v2/project/' + application_id + '/session/' + session_id + '/stream', response_class: Video::ListResponse)
27
29
  end
28
30
 
29
31
  # Get information about a specified stream.
@@ -38,8 +40,10 @@ module Vonage
38
40
  #
39
41
  # @see TODO: add docs link
40
42
  #
41
- def info(session_id:, stream_id:)
42
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/stream/' + stream_id)
43
+ def info(application_id: @config.application_id, session_id:, stream_id:)
44
+ # TODO: raise error if application_id is nil
45
+
46
+ request('/v2/project/' + application_id + '/session/' + session_id + '/stream/' + stream_id)
43
47
  end
44
48
 
45
49
  # Change the layout for a list of specified streams.
@@ -58,13 +62,15 @@ module Vonage
58
62
  #
59
63
  # @see TODO: add docs link
60
64
  #
61
- def change_layout(session_id:, **params)
65
+ def change_layout(application_id: @config.application_id, session_id:, **params)
66
+ # TODO: raise error if application_id is nil
62
67
  # TODO camelcase layout_class_list
63
68
  # if params[:items]
64
69
  # params[:items] = params[:items].map {|item| camelcase(item)}
65
70
  # end
66
71
 
67
- request('/v2/project/' + @config.application_id + '/session/' + session_id + '/stream', params: params, type: Put)
72
+ request('/v2/project/' + application_id + '/session/' + session_id + '/stream', params: params, type: Put)
68
73
  end
69
74
  end
70
75
  end
76
+
data/lib/vonage/video.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  module Vonage
5
5
  class Video < Namespace
6
6
  include Keys
7
-
7
+
8
8
  self.authentication = BearerToken
9
9
 
10
10
  self.host = :video_host
@@ -30,7 +30,7 @@ module Vonage
30
30
  #
31
31
  def create_session(**params)
32
32
  request_params = params.clone
33
- request_params[:archive_mode] ||= 'manual'
33
+ request_params[:archive_mode] ||= 'manual'
34
34
  media_mode = request_params.delete(:media_mode) || 'routed'
35
35
 
36
36
  if media_mode == 'relayed' && request_params[:archive_mode] == 'manual'
@@ -42,7 +42,7 @@ module Vonage
42
42
  response = request('/session/create', params: camelcase(request_params), type: Post)
43
43
 
44
44
  public_response_data = {
45
- session_id: response.entity.first.session_id,
45
+ session_id: response.entity[:session_id],
46
46
  archive_mode: request_params[:archive_mode],
47
47
  media_mode: media_mode,
48
48
  location: request_params[:location]
@@ -54,22 +54,7 @@ module Vonage
54
54
  end
55
55
 
56
56
  def generate_client_token(session_id:, scope: 'session.connect', role: 'publisher', **params)
57
- valid_roles = %w[publisher subscriber moderator publisheronly]
58
- raise ArgumentError, "Invalid role: #{role}" unless valid_roles.include?(role)
59
-
60
- claims = {
61
- application_id: @config.application_id,
62
- scope: scope,
63
- session_id: session_id,
64
- role: role,
65
- initial_layout_class_list: '',
66
- sub: 'video',
67
- acl: {
68
- paths: {'/session/**' => {}}
69
- }
70
- }
71
-
72
-
57
+ claims = {session_id: session_id, application_id: @config.application_id, scope: scope, role: role}
73
58
  claims[:data] = params[:data] if params[:data]
74
59
  claims[:initial_layout_class_list] = params[:initial_layout_class_list].join(' ') if params[:initial_layout_class_list]
75
60
  claims[:exp] = params[:expire_time].to_i if params[:expire_time]
@@ -77,52 +62,30 @@ module Vonage
77
62
  JWT.generate(claims, @config.private_key)
78
63
  end
79
64
 
80
- # @return [Archives]
65
+ # @return [Streams]
81
66
  #
82
- def archives
83
- @archives ||= Archives.new(@config)
67
+ def streams
68
+ @streams ||= Streams.new(@config)
84
69
  end
85
70
 
86
- # @return [Broadcasts]
71
+ # @return [Archives]
87
72
  #
88
- def broadcasts
89
- @broadcasts ||= Broadcasts.new(@config)
73
+ def archives
74
+ @archives ||= Archives.new(@config)
90
75
  end
91
76
 
92
- # @return [Moderation]
77
+ # @return [Archives]
93
78
  #
94
79
  def moderation
95
80
  @moderation ||= Moderation.new(@config)
96
81
  end
97
82
 
98
- # @return [Signals]
83
+ # @return [Archives]
99
84
  #
100
85
  def signals
101
86
  @signals ||= Signals.new(@config)
102
87
  end
103
88
 
104
- # @return [Streams]
105
- #
106
- def streams
107
- @streams ||= Streams.new(@config)
108
- end
109
-
110
- # @return [Captions]
111
- #
112
- def captions
113
- @captions ||= Captions.new(@config)
114
- end
115
-
116
- # @return [Renders]
117
- #
118
- def renders
119
- @renders ||= Renders.new(@config)
120
- end
121
-
122
- # @return [WebSocket]
123
- #
124
- def web_socket
125
- @web_socket ||= WebSocket.new(@config)
126
- end
89
+ # TODO: add token generator
127
90
  end
128
91
  end
@@ -2,9 +2,9 @@
2
2
  # frozen_string_literal: true
3
3
  require 'phonelib'
4
4
 
5
- module Vonage
5
+ module Vonage
6
6
  class Voice::Actions::Connect
7
- attr_accessor :endpoint, :from, :eventType, :timeout, :limit, :machineDetection, :advanced_machine_detection, :eventUrl, :eventMethod, :ringbackTone
7
+ attr_accessor :endpoint, :from, :eventType, :timeout, :limit, :machineDetection, :eventUrl, :eventMethod, :ringbackTone
8
8
 
9
9
  def initialize(attributes = {})
10
10
  @endpoint = attributes.fetch(:endpoint)
@@ -13,7 +13,6 @@ module Vonage
13
13
  @timeout = attributes.fetch(:timeout, nil)
14
14
  @limit = attributes.fetch(:limit, nil)
15
15
  @machineDetection = attributes.fetch(:machineDetection, nil)
16
- @advanced_machine_detection = attributes.fetch(:advanced_machine_detection, nil)
17
16
  @eventUrl = attributes.fetch(:eventUrl, nil)
18
17
  @eventMethod = attributes.fetch(:eventMethod, nil)
19
18
  @ringbackTone = attributes.fetch(:ringbackTone, nil)
@@ -40,10 +39,6 @@ module Vonage
40
39
  verify_machine_detection
41
40
  end
42
41
 
43
- if self.advanced_machine_detection
44
- verify_advanced_machine_detection
45
- end
46
-
47
42
  if self.eventUrl
48
43
  verify_event_url
49
44
  end
@@ -87,33 +82,10 @@ module Vonage
87
82
  raise ClientError.new("Invalid 'machineDetection' value, must be either: 'continue' or 'hangup' if defined") unless self.machineDetection == 'continue' || self.machineDetection == 'hangup'
88
83
  end
89
84
 
90
- def verify_advanced_machine_detection
91
- raise ClientError.new("Invalid 'advanced_machine_detection' value, must be a Hash") unless self.advanced_machine_detection.is_a?(Hash)
92
- verify_advanced_machine_detection_behavior if self.advanced_machine_detection[:behavior]
93
- verify_advanced_machine_detection_mode if self.advanced_machine_detection[:mode]
94
- verify_advanced_machine_detection_beep_timeout if self.advanced_machine_detection[:beep_timeout]
95
- end
96
-
97
- def verify_advanced_machine_detection_behavior
98
- raise ClientError.new("Invalid 'advanced_machine_detection[:behavior]' value, must be a `continue` or `hangup`") unless ['continue', 'hangup'].include?(self.advanced_machine_detection[:behavior])
99
- end
100
-
101
- def verify_advanced_machine_detection_mode
102
- raise ClientError.new("Invalid 'advanced_machine_detection[:mode]' value, must be a `detect` or `detect_beep`") unless ['detect', 'detect_beep'].include?(self.advanced_machine_detection[:mode])
103
- end
104
-
105
- def verify_advanced_machine_detection_beep_timeout
106
- raise ClientError.new("Invalid 'advanced_machine_detection[:beep_timeout]' value, must be between 45 and 120") unless self.advanced_machine_detection[:beep_timeout].between?(45, 120)
107
- end
108
-
109
85
  def verify_event_url
110
- unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
111
- raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
112
- end
113
-
114
- uri = URI.parse(self.eventUrl[0])
86
+ uri = URI.parse(self.eventUrl)
115
87
 
116
- raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
88
+ raise ClientError.new("Invalid 'eventUrl' value, must be a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
117
89
 
118
90
  self.eventUrl
119
91
  end
@@ -213,7 +185,6 @@ module Vonage
213
185
  }
214
186
 
215
187
  hash.merge!(headers: endpoint_attrs[:headers]) if endpoint_attrs[:headers]
216
- hash.merge!(standardHeaders: endpoint_attrs[:standardHeaders]) if endpoint_attrs[:standardHeaders]
217
188
 
218
189
  hash
219
190
  end
@@ -225,4 +196,4 @@ module Vonage
225
196
  }
226
197
  end
227
198
  end
228
- end
199
+ end
@@ -1,7 +1,7 @@
1
1
  # typed: true
2
2
  # frozen_string_literal: true
3
-
4
- module Vonage
3
+
4
+ module Vonage
5
5
  class Voice::Actions::Conversation
6
6
  attr_accessor :name, :musicOnHoldUrl, :startOnEnter, :endOnExit, :record, :canSpeak, :canHear, :mute
7
7
 
@@ -49,15 +49,9 @@ module Vonage
49
49
  end
50
50
 
51
51
  def verify_music_on_hold_url
52
- music_on_hold_url = self.musicOnHoldUrl
53
-
54
- unless music_on_hold_url.is_a?(Array) && music_on_hold_url.length == 1 && music_on_hold_url[0].is_a?(String)
55
- raise ClientError.new("Expected 'musicOnHoldUrl' parameter to be an Array containing a single string item")
56
- end
57
-
58
- uri = URI.parse(music_on_hold_url[0])
52
+ uri = URI.parse(self.musicOnHoldUrl)
59
53
 
60
- raise ClientError.new("Invalid 'musicOnHoldUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
54
+ raise ClientError.new("Invalid 'musicOnHoldUrl' value, must be a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
61
55
 
62
56
  self.musicOnHoldUrl
63
57
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
  module Vonage
5
5
  class Voice::Actions::Input
6
- attr_accessor :type, :dtmf, :speech, :eventUrl, :eventMethod, :mode
6
+ attr_accessor :type, :dtmf, :speech, :eventUrl, :eventMethod
7
7
 
8
8
  def initialize(attributes = {})
9
9
  @type = attributes.fetch(:type)
@@ -11,7 +11,6 @@ module Vonage
11
11
  @speech = attributes.fetch(:speech, nil)
12
12
  @eventUrl = attributes.fetch(:eventUrl, nil)
13
13
  @eventMethod = attributes.fetch(:eventMethod, nil)
14
- @mode = attributes.fetch(:mode, nil)
15
14
 
16
15
  after_initialize!
17
16
  end
@@ -34,10 +33,6 @@ module Vonage
34
33
  if self.eventMethod
35
34
  validate_event_method
36
35
  end
37
-
38
- if self.mode
39
- validate_mode
40
- end
41
36
  end
42
37
 
43
38
  def validate_type
@@ -88,13 +83,9 @@ module Vonage
88
83
  end
89
84
 
90
85
  def validate_event_url
91
- unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
92
- raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
93
- end
94
-
95
- uri = URI.parse(self.eventUrl[0])
86
+ uri = URI.parse(self.eventUrl)
96
87
 
97
- raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
88
+ raise ClientError.new("Invalid 'eventUrl' value, must be a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
98
89
 
99
90
  self.eventUrl
100
91
  end
@@ -105,12 +96,6 @@ module Vonage
105
96
  raise ClientError.new("Invalid 'eventMethod' value. must be either: 'GET' or 'POST'") unless valid_methods.include?(self.eventMethod.upcase)
106
97
  end
107
98
 
108
- def validate_mode
109
- valid_modes = ['asyncronous']
110
-
111
- raise ClientError.new("Invalid 'mode' value, must be asyncronous'") unless valid_modes.include?(self.mode)
112
- end
113
-
114
99
  def action
115
100
  create_input!(self)
116
101
  end
@@ -127,7 +112,6 @@ module Vonage
127
112
  ncco[0].merge!(speech: builder.speech) if builder.speech
128
113
  ncco[0].merge!(eventUrl: builder.eventUrl) if builder.eventUrl
129
114
  ncco[0].merge!(eventMethod: builder.eventMethod) if builder.eventMethod
130
- ncco[0].merge!(mode: builder.mode) if builder.mode
131
115
 
132
116
  ncco
133
117
  end
@@ -22,15 +22,10 @@ module Vonage
22
22
  end
23
23
 
24
24
  def validate_event_url
25
- event_url = self.eventUrl
25
+ uri = URI.parse(self.eventUrl[0])
26
26
 
27
- unless event_url.is_a?(Array) && event_url.length == 1 && event_url[0].is_a?(String)
28
- raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
29
- end
30
-
31
- uri = URI.parse(event_url[0])
32
-
33
- raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
27
+ raise ClientError.new("Expected 'eventUrl' value to be an Array with a single string") unless self.eventUrl.is_a?(Array)
28
+ raise ClientError.new("Invalid 'eventUrl' value, must be a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
34
29
 
35
30
  self.eventUrl
36
31
  end