vonage 7.8.2 → 8.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 263068d03f9527437cbee45239f7d51da8800b0003930002f6d10c6843f12828
4
- data.tar.gz: 5fdcc6879830f92cabe656c05e050eacc9616f2b135af2ca7f128d57cef6fded
3
+ metadata.gz: e003a6ed3211d3eace84884bf3fb03d21b81f097b13aba079f1906daf95380ff
4
+ data.tar.gz: 956c6921b50df45aaf2f1901b08ccd3cb164c2553b23d8e45570f63dcdf6f960
5
5
  SHA512:
6
- metadata.gz: 1beea2eeef06d2b8c9e6153fe5f356981e285f7c96bd8b3674af1ca09ae2fb606627c619bdaeec0803911590149fa63f6e581d59a03b7245b6f89e1ef914dac5
7
- data.tar.gz: 12ce327c5db5735e357c5ad39f0ab850f0e3f490dc71cfb65065a0b61ad6586821ce70a79101e1448c2df62995b546285af3d6a8c255c3a89cad615b8c36b0fb
6
+ metadata.gz: 1500879cd4a974009f6510cf12ea15b4ce60a9163f916b8a5e07fe785323c24c6909134163b21e29afc9c251550fd36a9e348c2ff7eac3b18b45f0e4ef7e1be1
7
+ data.tar.gz: fe368d23b897a7f1b2b9ba473c993a351ffb1233ef80304c16ec69ed28692c93e422c7a453f8d0da14b6e038424c215026a945d7ccee9b4a26412e3ecbe5435f
data/lib/vonage/client.rb CHANGED
@@ -131,6 +131,13 @@ module Vonage
131
131
  @verify ||= T.let(Verify.new(config), T.nilable(Vonage::Verify))
132
132
  end
133
133
 
134
+ # @return [Video]
135
+ #
136
+ sig { returns(T.nilable(Vonage::Video)) }
137
+ def video
138
+ @video ||= T.let(Video.new(config), T.nilable(Vonage::Video))
139
+ end
140
+
134
141
  # @return [Voice]
135
142
  #
136
143
  sig { returns(T.nilable(Vonage::Voice)) }
data/lib/vonage/config.rb CHANGED
@@ -18,6 +18,7 @@ module Vonage
18
18
  self.signature_secret = ENV['VONAGE_SIGNATURE_SECRET']
19
19
  self.signature_method = ENV['VONAGE_SIGNATURE_METHOD'] || 'md5hash'
20
20
  self.token = T.let(nil, T.nilable(String))
21
+ self.video_host = 'video.api.vonage.com'
21
22
  end
22
23
 
23
24
  # Merges the config with the given options hash.
@@ -198,6 +199,9 @@ module Vonage
198
199
  sig { params(token: T.nilable(String)).returns(T.nilable(String)) }
199
200
  attr_writer :token
200
201
 
202
+ sig { returns(String) }
203
+ attr_accessor :video_host
204
+
201
205
  protected
202
206
 
203
207
  sig { params(name: Symbol, value: T.untyped).void }
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/keys.rb CHANGED
@@ -21,7 +21,13 @@ module Vonage
21
21
  'voice_callback_value',
22
22
  'voice_status_callback',
23
23
  'messages_callback_value',
24
- 'messages_callback_type'
24
+ 'messages_callback_type',
25
+ 'add_stream',
26
+ 'has_audio',
27
+ 'has_video',
28
+ 'remove_stream',
29
+ 'screenshare_type',
30
+ 'archive_mode'
25
31
  ]
26
32
  hash.transform_keys do |k|
27
33
  if exceptions.include?(k.to_s)
@@ -8,7 +8,7 @@ module Vonage
8
8
  def initialize(config)
9
9
  @config = config
10
10
 
11
- @host = self.class.host == :api_host ? @config.api_host : @config.rest_host
11
+ @host = set_host
12
12
 
13
13
  @http = Net::HTTP.new(@host, Net::HTTP.https_default_port, p_addr = nil)
14
14
  @http.use_ssl = true
@@ -21,7 +21,7 @@ module Vonage
21
21
  end
22
22
 
23
23
  def self.host=(host)
24
- raise ArgumentError unless host == :rest_host
24
+ raise ArgumentError unless host == :rest_host || host == :video_host
25
25
 
26
26
  @host = host
27
27
  end
@@ -51,6 +51,7 @@ module Vonage
51
51
 
52
52
  Get = Net::HTTP::Get
53
53
  Put = Net::HTTP::Put
54
+ Patch = Net::HTTP::Patch
54
55
  Post = Net::HTTP::Post
55
56
  Delete = Net::HTTP::Delete
56
57
 
@@ -217,6 +218,19 @@ module Vonage
217
218
  def logger
218
219
  @config.logger
219
220
  end
221
+
222
+ private
223
+
224
+ def set_host
225
+ case self.class.host
226
+ when :rest_host
227
+ @config.rest_host
228
+ when :video_host
229
+ @config.video_host
230
+ else
231
+ @config.api_host
232
+ end
233
+ end
220
234
  end
221
235
 
222
236
  private_constant :Namespace
@@ -32,7 +32,7 @@ module Vonage
32
32
 
33
33
  signature = params.delete('sig')
34
34
 
35
- ::JWT::Algos::Hmac::SecurityUtils.secure_compare(signature, digest(params, signature_method))
35
+ ::JWT::SecurityUtils.secure_compare(signature, digest(params, signature_method))
36
36
  end
37
37
 
38
38
  private
data/lib/vonage/sms.rb CHANGED
@@ -47,6 +47,14 @@ module Vonage
47
47
  # @option params [String] :type
48
48
  # The format of the message body.
49
49
  #
50
+ # @option params [String] :vcard
51
+ # A business card in [vCard format](https://en.wikipedia.org/wiki/VCard).
52
+ # Depends on **:type** option having the value `vcard`.
53
+ #
54
+ # @option params [String] :vcal
55
+ # A calendar event in [vCal format](https://en.wikipedia.org/wiki/VCal).
56
+ # Depends on **:type** option having the value `vcal`.
57
+ #
50
58
  # @option params [String] :body
51
59
  # Hex encoded binary data.
52
60
  # Depends on **:type** option having the value `binary`.
@@ -59,6 +67,18 @@ module Vonage
59
67
  # The value of the [protocol identifier](https://en.wikipedia.org/wiki/GSM_03.40#Protocol_Identifier) to use.
60
68
  # Ensure that the value is aligned with **:udh**.
61
69
  #
70
+ # @option params [String] :title
71
+ # The title for a wappush SMS.
72
+ # Depends on **:type** option having the value `wappush`.
73
+ #
74
+ # @option params [String] :url
75
+ # The URL of your website.
76
+ # Depends on **:type** option having the value `wappush`.
77
+ #
78
+ # @option params [String] :validity
79
+ # The availability for an SMS in milliseconds.
80
+ # Depends on **:type** option having the value `wappush`.
81
+ #
62
82
  # @option params [String] :client_ref
63
83
  # You can optionally include your own reference of up to 40 characters.
64
84
  #
@@ -1,5 +1,5 @@
1
1
  # typed: strong
2
2
 
3
3
  module Vonage
4
- VERSION = '7.8.2'
4
+ VERSION = '8.0.0.beta'
5
5
  end
@@ -0,0 +1,187 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module Vonage
5
+ class Video::Archives < Namespace
6
+ include Keys
7
+
8
+ self.authentication = BearerToken
9
+
10
+ self.request_body = JSON
11
+
12
+ self.host = :video_host
13
+
14
+ # Get a list of archives for a specified Vonage application.
15
+ #
16
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
17
+ #
18
+ # @param [optional, Integer] :offset
19
+ #
20
+ # @param [optional, Integer] :count
21
+ #
22
+ # @param [optional, String] :session_id
23
+ #
24
+ # TODO: add auto_advance option
25
+ #
26
+ # @return [ListResponse]
27
+ #
28
+ # @see TODO: add docs link
29
+ #
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)
34
+ end
35
+
36
+ # Return information for specified archive.
37
+ #
38
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
39
+ #
40
+ # @param [required, String] archive_id
41
+ #
42
+ # @return [Response]
43
+ #
44
+ # @see TODO: add docs link
45
+ #
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)
50
+ end
51
+
52
+ # Create a new archive.
53
+ #
54
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
55
+ #
56
+ # @param [required, String] :session_id
57
+ #
58
+ # @param [optional, String] :hasAudio
59
+ #
60
+ # @param [optional, String] :hasVideo
61
+ #
62
+ # @param [optional, String] :name
63
+ #
64
+ # @param [optional, String] :outputMode
65
+ #
66
+ # @param [optional, String] :resolution
67
+ #
68
+ # @param [optional, String] :streamMode
69
+ #
70
+ # @param [optional, String] :multiArchiveTag
71
+ #
72
+ # @param [optional, Hash] :layout
73
+ #
74
+ # @option layout [optional, String] :type
75
+ #
76
+ # @option layout [optional, String] :stylesheet
77
+ #
78
+ # @option layout [optional, String] :screenshareType
79
+ #
80
+ # @return [Response]
81
+ #
82
+ # @see TODO: add docs link
83
+ #
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)
89
+ end
90
+
91
+ # Stop recording a specified archive.
92
+ #
93
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
94
+ #
95
+ # @param [required, String] archive_id
96
+ #
97
+ # @return [Response]
98
+ #
99
+ # @see TODO: add docs link
100
+ #
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)
105
+ end
106
+
107
+ # Delete a specified archive.
108
+ #
109
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
110
+ #
111
+ # @param [required, String] archive_id
112
+ #
113
+ # @return [Response]
114
+ #
115
+ # @see TODO: add docs link
116
+ #
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)
121
+ end
122
+
123
+ # Add a stream to a composed archive that was started with the streamMode set to "manual".
124
+ #
125
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
126
+ #
127
+ # @param [required, String] archive_id
128
+ #
129
+ # @param [required, String] add_stream The ID of the stream to be added
130
+ #
131
+ # @param [optional, Boolean] has_audio
132
+ #
133
+ # @param [optional, Boolean] has_video
134
+ #
135
+ # @return [Response]
136
+ #
137
+ # @see TODO: add docs link
138
+ #
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)
144
+ end
145
+
146
+ # Remove a stream from a composed archive that was started with the streamMode set to "manual".
147
+ #
148
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
149
+ #
150
+ # @param [required, String] archive_id
151
+ #
152
+ # @param [required, String] remove_stream The ID of the stream to be removed
153
+ #
154
+ # @return [Response]
155
+ #
156
+ # @see TODO: add docs link
157
+ #
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)
163
+ end
164
+
165
+ # Change the layout of a composed archive while it is being recorded.
166
+ #
167
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
168
+ #
169
+ # @param [required, String] archive_id
170
+ #
171
+ # @param [optional, String] type
172
+ #
173
+ # @param [optional, String] stylesheet
174
+ #
175
+ # @param [optional, String] screenshare_type
176
+ #
177
+ # @return [Response]
178
+ #
179
+ # @see TODO: add docs link
180
+ #
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)
185
+ end
186
+ end
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
@@ -0,0 +1,73 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module Vonage
5
+ class Video::Moderation < Namespace
6
+ self.authentication = BearerToken
7
+
8
+ self.request_body = JSON
9
+
10
+ self.host = :video_host
11
+
12
+ # Force a client to disconnect from a session.
13
+ #
14
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
15
+ #
16
+ # @param [required, String] :session_id
17
+ #
18
+ # @param [required, String] :connection_id The connection ID of the specific participant to be disconnected from the session.
19
+ #
20
+ # @return [Response]
21
+ #
22
+ # @see TODO: add docs link
23
+ #
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)
28
+ end
29
+
30
+ # Force mute a specific publisher stream in a session.
31
+ #
32
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
33
+ #
34
+ # @param [required, String] :session_id
35
+ #
36
+ # @param [required, String] :stream_id The stream ID of the specific stream to be muted.
37
+ #
38
+ # @return [Response]
39
+ #
40
+ # @see TODO: add docs link
41
+ #
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)
47
+ end
48
+
49
+ # Force mute all publisher stream for a specific session.
50
+ #
51
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
52
+ #
53
+ # @param [required, String] :session_id
54
+ #
55
+ # @param [required, String] :active
56
+ #
57
+ # @param [required, Array<String>] :excludedStreamIds
58
+ #
59
+ # @return [Response]
60
+ #
61
+ # @see TODO: add docs link
62
+ #
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)
68
+ end
69
+
70
+ # TODO: add disable_force_mute ??
71
+ end
72
+ end
73
+
@@ -0,0 +1,55 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module Vonage
5
+ class Video::Signals < Namespace
6
+ self.authentication = BearerToken
7
+
8
+ self.request_body = JSON
9
+
10
+ self.host = :video_host
11
+
12
+ # Send a signal to a specific participant in an active Vonage Video session.
13
+ #
14
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
15
+ #
16
+ # @param [required, String] :session_id
17
+ #
18
+ # @param [required, String] :connection_id The connection ID of the specific participant.
19
+ #
20
+ # @param [required, String] :type Type of data that is being sent to the client.
21
+ #
22
+ # @param [required, String] :data Payload that is being sent to the client.
23
+ #
24
+ # @return [Response]
25
+ #
26
+ # @see TODO: add docs link
27
+ #
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)
32
+ end
33
+
34
+ # Send a signal to all participants in an active Vonage Video session.
35
+ #
36
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
37
+ #
38
+ # @param [required, String] :session_id
39
+ #
40
+ # @param [required, String] :type Type of data that is being sent to the client.
41
+ #
42
+ # @param [required, String] :data Payload that is being sent to the client.
43
+ #
44
+ # @return [Response]
45
+ #
46
+ # @see TODO: add docs link
47
+ #
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)
52
+ end
53
+ end
54
+ end
55
+
@@ -0,0 +1,76 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module Vonage
5
+ class Video::Streams < Namespace
6
+
7
+ self.authentication = BearerToken
8
+
9
+ self.request_body = JSON
10
+
11
+ self.host = :video_host
12
+
13
+ # Get a list of streams for a specified session.
14
+ #
15
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
16
+ #
17
+ # @param [required, String] :session_id
18
+ #
19
+ # TODO: add auto_advance option
20
+ #
21
+ # @return [ListResponse]
22
+ #
23
+ # @see TODO: add docs link
24
+ #
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)
29
+ end
30
+
31
+ # Get information about a specified stream.
32
+ #
33
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
34
+ #
35
+ # @param [required, String] :session_id
36
+ #
37
+ # @param [required, String] :stream_id
38
+ #
39
+ # @return [Response]
40
+ #
41
+ # @see TODO: add docs link
42
+ #
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)
47
+ end
48
+
49
+ # Change the layout for a list of specified streams.
50
+ #
51
+ # @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
52
+ #
53
+ # @param [required, String] :session_id
54
+ #
55
+ # @param [optional, Array<Hash>] :items An array of hashes representing streams and the layout classes for those streams
56
+ #
57
+ # @option items [required, String] :id The stream ID
58
+ #
59
+ # @option items [required, Array<String>] :layoutClassList Array of CSS class names as strings
60
+ #
61
+ # @return [Response]
62
+ #
63
+ # @see TODO: add docs link
64
+ #
65
+ def change_layout(application_id: @config.application_id, session_id:, **params)
66
+ # TODO: raise error if application_id is nil
67
+ # TODO camelcase layout_class_list
68
+ # if params[:items]
69
+ # params[:items] = params[:items].map {|item| camelcase(item)}
70
+ # end
71
+
72
+ request('/v2/project/' + application_id + '/session/' + session_id + '/stream', params: params, type: Put)
73
+ end
74
+ end
75
+ end
76
+
@@ -0,0 +1,91 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module Vonage
5
+ class Video < Namespace
6
+ include Keys
7
+
8
+ self.authentication = BearerToken
9
+
10
+ self.host = :video_host
11
+
12
+ # Generate a new session.
13
+ #
14
+ # @example
15
+ # session = client.video.create_session({
16
+ # archive_mode: 'always',
17
+ # location: '10.1.200.30',
18
+ # media_mode: 'routed'
19
+ # })
20
+ #
21
+ # @params [optional, String] :archive_mode (either 'always' or 'manual')
22
+ #
23
+ # @param [optional, String] :location
24
+ #
25
+ # @params [optional, String] :media_mode (either 'routed' or 'relayed')
26
+ #
27
+ # @return [Response]
28
+ #
29
+ # @see TODO: Add document link here
30
+ #
31
+ def create_session(**params)
32
+ request_params = params.clone
33
+ request_params[:archive_mode] ||= 'manual'
34
+ media_mode = request_params.delete(:media_mode) || 'routed'
35
+
36
+ if media_mode == 'relayed' && request_params[:archive_mode] == 'manual'
37
+ request_params['p2p.preference'] = 'enabled'
38
+ else
39
+ request_params['p2p.preference'] = 'disabled'
40
+ end
41
+
42
+ response = request('/session/create', params: camelcase(request_params), type: Post)
43
+
44
+ public_response_data = {
45
+ session_id: response.entity[:session_id],
46
+ archive_mode: request_params[:archive_mode],
47
+ media_mode: media_mode,
48
+ location: request_params[:location]
49
+ }
50
+
51
+ entity = Entity.new(public_response_data)
52
+
53
+ response.class.new(entity, response.http_response)
54
+ end
55
+
56
+ def generate_client_token(session_id:, scope: 'session.connect', role: 'publisher', **params)
57
+ claims = {session_id: session_id, application_id: @config.application_id, scope: scope, role: role}
58
+ claims[:data] = params[:data] if params[:data]
59
+ claims[:initial_layout_class_list] = params[:initial_layout_class_list].join(' ') if params[:initial_layout_class_list]
60
+ claims[:exp] = params[:expire_time].to_i if params[:expire_time]
61
+
62
+ JWT.generate(claims, @config.private_key)
63
+ end
64
+
65
+ # @return [Streams]
66
+ #
67
+ def streams
68
+ @streams ||= Streams.new(@config)
69
+ end
70
+
71
+ # @return [Archives]
72
+ #
73
+ def archives
74
+ @archives ||= Archives.new(@config)
75
+ end
76
+
77
+ # @return [Archives]
78
+ #
79
+ def moderation
80
+ @moderation ||= Moderation.new(@config)
81
+ end
82
+
83
+ # @return [Archives]
84
+ #
85
+ def signals
86
+ @signals ||= Signals.new(@config)
87
+ end
88
+
89
+ # TODO: add token generator
90
+ end
91
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vonage
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.8.2
4
+ version: 8.0.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vonage
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-04 00:00:00.000000000 Z
11
+ date: 2022-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: vonage-jwt
@@ -153,6 +153,12 @@ files:
153
153
  - lib/vonage/user_agent.rb
154
154
  - lib/vonage/verify.rb
155
155
  - lib/vonage/version.rb
156
+ - lib/vonage/video.rb
157
+ - lib/vonage/video/archives.rb
158
+ - lib/vonage/video/list_response.rb
159
+ - lib/vonage/video/moderation.rb
160
+ - lib/vonage/video/signals.rb
161
+ - lib/vonage/video/streams.rb
156
162
  - lib/vonage/voice.rb
157
163
  - lib/vonage/voice/actions/connect.rb
158
164
  - lib/vonage/voice/actions/conversation.rb
@@ -188,11 +194,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
194
  version: 2.5.0
189
195
  required_rubygems_version: !ruby/object:Gem::Requirement
190
196
  requirements:
191
- - - ">="
197
+ - - ">"
192
198
  - !ruby/object:Gem::Version
193
- version: '0'
199
+ version: 1.3.1
194
200
  requirements: []
195
- rubygems_version: 3.4.1
201
+ rubygems_version: 3.3.26
196
202
  signing_key:
197
203
  specification_version: 4
198
204
  summary: This is the Ruby Server SDK for Vonage APIs. To use it you'll need a Vonage