opentok 4.3.0 → 4.4.0

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: 7f62fb97355256f1598610039ab4a80a186ddd61f3dda8b2d39f191e3c0b7341
4
- data.tar.gz: 7bd988f8c398a851c955a04f9e450009c3617819cda0204976b45fd76a6cdc36
3
+ metadata.gz: c6c9c87f306480694d35b2f47c92bc20b65686061fb610c3d5d1d4f9cf863b81
4
+ data.tar.gz: 6e92e0db27f27fa7468235345dc69eb52a0e694fbddfe75e0ac75d9801537f09
5
5
  SHA512:
6
- metadata.gz: a19392b392cbdef32902fbe563313a49af146b19c7409865bf3820d81c6df4b0fd6b11e3d949f891a2565f45ac81a3b45c0e073eac2e29e58e5390826df2c38e
7
- data.tar.gz: ca1c2d809b6488f9f3580a6eb857009e5d154f397d63541d713f96f7086f7383e1686a493929fbe4b7ddd3b6f2f9badd23ea539ddd3d2dd89a70ccde1af51a68
6
+ metadata.gz: 9dc075e65d9723382a4b0b421d72326dda3268d9eaf4b1c23aea4ccb35d7b66291182dd9c38cb96b9b66f2de9212715920d39a5fa5b6e1e7d12d187818edcc2b
7
+ data.tar.gz: 5d829c2f208d314ac37f923cef98993e69307a13418ea359e5685ece36f80320949fe500fe24f499cd86eab1cbfd293c9151cd8908c11492a2e01db3eecf2609
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 4.4.0
2
+
3
+ * Implements DVR Pause/Resume and HLS Low-Latency options for Broadcasts [#243](https://github.com/opentok/OpenTok-Ruby-SDK/pull/243)
4
+
1
5
  # 4.3.0
2
6
 
3
7
  * Fixes an issue with `activesupport` [#238](https://github.com/opentok/OpenTok-Ruby-SDK/pull/238)
data/README.md CHANGED
@@ -489,7 +489,7 @@ Reference documentation is available at <http://www.tokbox.com//opentok/librarie
489
489
  # Requirements
490
490
 
491
491
  You need an OpenTok API key and API secret, which you can obtain by logging into your
492
- [TokBox account](https://tokbox.com/account).
492
+ [Vonage Video API account](https://tokbox.com/account).
493
493
 
494
494
  The OpenTok Ruby SDK requires Ruby 2.1.0 or greater.
495
495
 
@@ -51,11 +51,10 @@ module OpenTok
51
51
  # @option options [String] :streamMode (Optional) Whether streams included in the archive are selected
52
52
  # automatically ("auto", the default) or manually ("manual"). When streams are selected automatically ("auto"),
53
53
  # all streams in the session can be included in the archive. When streams are selected manually ("manual"),
54
- # you specify streams to be included based on calls to this REST method
55
- # { https://tokbox.com/developer/rest/#selecting-archive-streams }. You can specify whether a
54
+ # you specify streams to be included based on calls to the {Archives#add_stream} method. You can specify whether a
56
55
  # stream's audio, video, or both are included in the archive.
57
56
  # In composed archives, in both automatic and manual modes, the archive composer includes streams based
58
- # on stream prioritization rules { https://tokbox.com/developer/guides/archive-broadcast-layout/#stream-prioritization-rules }.
57
+ # on {https://tokbox.com/developer/guides/archive-broadcast-layout/#stream-prioritization-rules stream prioritization rules}.
59
58
  # Important: this feature is currently available in the Standard environment only.
60
59
  # @option options [Hash] :layout Specify this to assign the initial layout type for
61
60
  # the archive. This applies only to composed archives. This is a hash containing three keys:
@@ -42,15 +42,37 @@ module OpenTok
42
42
  # the maximum duration is reached. You can set the maximum duration to a value from 60 (60 seconds) to 36000 (10 hours).
43
43
  # The default maximum duration is 4 hours (14,400 seconds).
44
44
  #
45
- # @option options [Hash] outputs
45
+ # @option options [Hash] outputs (Required)
46
46
  # This object defines the types of broadcast streams you want to start (both HLS and RTMP).
47
47
  # You can include HLS, RTMP, or both as broadcast streams. If you include RTMP streaming,
48
48
  # you can specify up to five target RTMP streams (or just one).
49
- # The (<code>:hls</code>) property is set to an empty [Hash] object. The HLS URL is returned in the response.
50
- # The (<code>:rtmp</code>) property is set to an [Array] of Rtmp [Hash] properties.
51
- # For each RTMP , specify (<code>:serverUrl</code>) for the RTMP server URL,
49
+ #
50
+ # For multiple RTMP streams, the (<code>:rtmp</code>) property is set to an [Array] of Rtmp [Hash] objects.
51
+ # For each RTMP hash, specify (<code>:serverUrl</code>) for the RTMP server URL,
52
52
  # (<code>:streamName</code>) such as the YouTube Live stream name or the Facebook stream key),
53
- # and (optionally) (<code>:id</code>), a unique ID for the stream.
53
+ # and (optionally) (<code>:id</code>), a unique ID for the stream. If you specify an ID, it will be
54
+ # included in the (<code>broadcast_json</code>) response from the Client#start_broadcast method call,
55
+ # and is also available in the (<code>broadcast_json</code>) response from the Broadcasts#find method.
56
+ # Vonage streams the session to each RTMP URL you specify. Note that OpenTok live streaming
57
+ # supports RTMP and RTMPS.
58
+ # If you need to support only one RTMP URL, you can set a Rtmp [Hash] object (instead of an array of
59
+ # objects) for the (<code>:rtmp</code>) property value in the (<code>:outputs</code>) [Hash].
60
+ #
61
+ # For HLS, the (<code>:hls</code>) property in the (<code>:outputs</code>) [Hash] is set to a HLS [Hash]
62
+ # object. This object includes the following optional properties:
63
+ # - (<code>:dvr</code>) (Boolean). Whether to enable
64
+ # {https://tokbox.com/developer/guides/broadcast/live-streaming/#dvr DVR functionality}
65
+ # (rewinding, pausing, and resuming)
66
+ # in players that support it (true), or not (false, the default). With DVR enabled, the HLS URL will
67
+ # include a ?DVR query string appended to the end.
68
+ # - (<code>:low_latency</code>) (Boolean). Whether to enable
69
+ # {https://tokbox.com/developer/guides/broadcast/live-streaming/#low-latency low-latency mode}
70
+ # for the HLSstream.
71
+ # Some HLS players do not support low-latency mode. This feature is incompatible with DVR mode HLS
72
+ # broadcasts (both can't be set to true). This is a beta feature.
73
+ # The HLS URL is included in the (<code>broadcast_json</code>) response from the Client#start_broadcast
74
+ # method call, and is also available in the (<code>broadcast_json</code>) response from the
75
+ # Broadcasts#find method.
54
76
  #
55
77
  # @option options [string] resolution
56
78
  # The resolution of the broadcast: either "640x480" (SD, the default) or "1280x720" (HD).
@@ -58,11 +80,11 @@ module OpenTok
58
80
  # @option options [String] :streamMode (Optional) Whether streams included in the broadcast are selected
59
81
  # automatically ("auto", the default) or manually ("manual"). When streams are selected automatically ("auto"),
60
82
  # all streams in the session can be included in the broadcast. When streams are selected manually ("manual"),
61
- # you specify streams to be included based on calls to this REST method
62
- # { https://tokbox.com/developer/rest/#selecting-broadcast-streams }. You can specify whether a
83
+ # you specify streams to be included based on calls to the
84
+ # {Broadcasts#add_stream} method. You can specify whether a
63
85
  # stream's audio, video, or both are included in the broadcast.
64
86
  # For both automatic and manual modes, the broadcast composer includes streams based
65
- # on stream prioritization rules { https://tokbox.com/developer/guides/archive-broadcast-layout/#stream-prioritization-rules }.
87
+ # on {https://tokbox.com/developer/guides/archive-broadcast-layout/#stream-prioritization-rules stream prioritization rules}.
66
88
  # Important: this feature is currently available in the Standard environment only.
67
89
  #
68
90
  # @return [Broadcast] The broadcast object, which includes properties defining the broadcast,
@@ -75,6 +97,13 @@ module OpenTok
75
97
  def create(session_id, options = {})
76
98
  raise ArgumentError, "session_id not provided" if session_id.to_s.empty?
77
99
  raise ArgumentError, "options cannot be empty" if options.empty?
100
+ raise ArgumentError, "outputs property is required in options" unless options.has_key?(:outputs)
101
+ raise ArgumentError, "outputs must be a Hash" unless options[:outputs].is_a? Hash
102
+ if options[:outputs].has_key?(:hls)
103
+ dvr = options[:outputs][:hls][:dvr]
104
+ low_latency = options[:outputs][:hls][:low_latency]
105
+ raise ArgumentError, "dvr and low_latency can't both be true for HLS" if hls_dvr_and_low_latency_options_both_true?(dvr, low_latency)
106
+ end
78
107
  broadcast_json = @client.start_broadcast(session_id, options)
79
108
  Broadcast.new self, broadcast_json
80
109
  end
@@ -263,5 +292,9 @@ module OpenTok
263
292
  has_audio == false && has_video == false
264
293
  end
265
294
 
295
+ def hls_dvr_and_low_latency_options_both_true?(dvr, low_latency)
296
+ dvr == true && low_latency == true
297
+ end
298
+
266
299
  end
267
300
  end
@@ -42,9 +42,9 @@ module OpenTok
42
42
  # streams, and signal. (This is the default value if you do not specify a role.)
43
43
  #
44
44
  # * <code>:moderator</code> -- In addition to the privileges granted to a
45
- # publisher, a moderator can perform moderation functions, such as forcing clients
46
- # to disconnect, to stop publishing streams, or to mute audio in published streams. See the
47
- # {https://tokbox.com/developer/guides/moderation/ Moderation developer guide}.
45
+ # publisher, a moderator can perform moderation functions, such as forcing clients
46
+ # to disconnect, to stop publishing streams, or to mute audio in published streams. See the
47
+ # {https://tokbox.com/developer/guides/moderation/ Moderation developer guide}.
48
48
  # @option options [integer] :expire_time The expiration time, in seconds since the UNIX epoch.
49
49
  # Pass in 0 to use the default expiration time of 24 hours after the token creation time.
50
50
  # The maximum expiration time is 30 days after the creation time.
@@ -77,8 +77,8 @@ module OpenTok
77
77
  # @param [String] api_key The OpenTok API key for your
78
78
  # {https://tokbox.com/account OpenTok project}.
79
79
  # @param [String] api_secret Your OpenTok API key.
80
- # @option opts [Symbol] :api_url Do not set this parameter. It is for internal use by TokBox.
81
- # @option opts [Symbol] :ua_addendum Do not set this parameter. It is for internal use by TokBox.
80
+ # @option opts [Symbol] :api_url Do not set this parameter. It is for internal use by Vonage.
81
+ # @option opts [Symbol] :ua_addendum Do not set this parameter. It is for internal use by Vonage.
82
82
  # @option opts [Symbol] :timeout_length Custom timeout in seconds. If not provided, defaults to 2 seconds.
83
83
  def initialize(api_key, api_secret, opts={})
84
84
  @api_key = api_key.to_s()
@@ -92,18 +92,16 @@ module OpenTok
92
92
  # by calling the disable_force_mute() method.
93
93
  #
94
94
  # @param [String] session_id The session ID.
95
- # @param [Hash] opts An optional hash defining options for muting action. For example:
95
+ # @param [Hash] opts An optional hash defining options for the muting action. For example:
96
+ # {
97
+ # "excluded_streams" => [
98
+ # "excludedStreamId1",
99
+ # "excludedStreamId2"
100
+ # ]
101
+ # }
96
102
  # @option opts [Array] :excluded_streams The stream IDs for streams that should not be muted.
97
103
  # This is an optional property. If you omit this property, all streams in the session will be muted.
98
104
  #
99
- # @example
100
- # {
101
- # "excluded_streams" => [
102
- # "excludedStreamId1",
103
- # "excludedStreamId2"
104
- # ]
105
- # }
106
- #
107
105
  def force_mute_all(session_id, opts = {})
108
106
  opts['active'] = 'true'
109
107
  response = @client.force_mute_session(session_id, opts)
@@ -1,4 +1,4 @@
1
1
  module OpenTok
2
2
  # @private
3
- VERSION = '4.3.0'
3
+ VERSION = '4.4.0'
4
4
  end
@@ -45,6 +45,22 @@ describe OpenTok::Broadcasts do
45
45
  broadcast.create(nil, {})
46
46
  }.to raise_error(ArgumentError)
47
47
  end
48
+ it 'raises an error if outputs is not set in options' do
49
+ opts = { maxDuration: 5400 }
50
+ expect { broadcast.create(nil, opts) }.to raise_error(ArgumentError)
51
+ end
52
+ it 'raises an error if outputs is set in options but is not a Hash' do
53
+ opts = { outputs: [] }
54
+ expect { broadcast.create(nil, opts) }.to raise_error(ArgumentError)
55
+ end
56
+ it 'raises an error if an HLS Broadcast object has both dvr and low_latency options set to true' do
57
+ opts = {
58
+ outputs: {
59
+ hls: { dvr: true, low_latency: true}
60
+ }
61
+ }
62
+ expect { broadcast.create(nil, opts) }.to raise_error(ArgumentError)
63
+ end
48
64
  it 'fetches a hls broadcast url', :vcr => { :erb => { :version => OpenTok::VERSION + "-Ruby-Version-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"} } do
49
65
  opts = {
50
66
  :outputs => {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentok
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.0
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stijn Mathysen
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2022-02-02 00:00:00.000000000 Z
15
+ date: 2022-05-09 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler