opentok 4.0.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +30 -0
  3. data/.github/workflows/metrics.yml +17 -0
  4. data/CODE_OF_CONDUCT.md +128 -0
  5. data/README.md +67 -47
  6. data/lib/opentok/archive.rb +1 -1
  7. data/lib/opentok/archives.rb +17 -5
  8. data/lib/opentok/broadcasts.rb +24 -9
  9. data/lib/opentok/client.rb +6 -4
  10. data/lib/opentok/constants.rb +1 -1
  11. data/lib/opentok/opentok.rb +4 -2
  12. data/lib/opentok/version.rb +1 -1
  13. data/opentok.gemspec +1 -1
  14. data/spec/cassettes/OpenTok_Archives/calls_layout_on_archive_object.yml +2 -0
  15. data/spec/cassettes/OpenTok_Archives/changes_the_layout_of_an_archive.yml +2 -0
  16. data/spec/cassettes/OpenTok_Archives/should_create_archives.yml +2 -0
  17. data/spec/cassettes/OpenTok_Archives/should_create_audio_only_archives.yml +2 -0
  18. data/spec/cassettes/OpenTok_Archives/should_create_custom_layout_archives.yml +2 -0
  19. data/spec/cassettes/OpenTok_Archives/should_create_hd_archives.yml +2 -0
  20. data/spec/cassettes/OpenTok_Archives/should_create_individual_archives.yml +2 -0
  21. data/spec/cassettes/OpenTok_Archives/should_create_layout_archives_with_screenshare_layout_types.yml +50 -0
  22. data/spec/cassettes/OpenTok_Archives/should_create_named_archives.yml +2 -0
  23. data/spec/cassettes/OpenTok_Archives/should_delete_an_archive_by_id.yml +2 -0
  24. data/spec/cassettes/OpenTok_Archives/should_find_archives_by_id.yml +2 -0
  25. data/spec/cassettes/OpenTok_Archives/should_find_archives_with_unknown_properties.yml +2 -0
  26. data/spec/cassettes/OpenTok_Archives/should_find_expired_archives.yml +2 -0
  27. data/spec/cassettes/OpenTok_Archives/should_find_paused_archives_by_id.yml +2 -0
  28. data/spec/cassettes/OpenTok_Archives/should_stop_archives.yml +2 -0
  29. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_all_archives.yml +2 -0
  30. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_archives_with_an_offset.yml +2 -0
  31. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_count_number_of_archives.yml +2 -0
  32. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_part_of_the_archives_when_using_offset_and_count.yml +2 -0
  33. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_session_archives.yml +2 -0
  34. data/spec/cassettes/OpenTok_Broadcasts/calls_layout_on_broadcast_object.yml +2 -0
  35. data/spec/cassettes/OpenTok_Broadcasts/changes_the_layout_of_a_broadcast.yml +2 -0
  36. data/spec/cassettes/OpenTok_Broadcasts/fetches_a_hls_broadcast_url.yml +2 -0
  37. data/spec/cassettes/OpenTok_Broadcasts/finds_a_broadcast.yml +2 -0
  38. data/spec/cassettes/OpenTok_Broadcasts/starts_a_rtmp_broadcast.yml +2 -0
  39. data/spec/cassettes/OpenTok_Broadcasts/stops_a_broadcast.yml +2 -0
  40. data/spec/cassettes/OpenTok_Connections/forces_a_connection_to_be_terminated.yml +2 -0
  41. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_always_archived_sessions.yml +2 -0
  42. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_default_sessions.yml +2 -0
  43. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_relayed_media_sessions.yml +2 -0
  44. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_relayed_media_sessions_for_invalid_media_modes.yml +2 -0
  45. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_relayed_media_sessions_with_a_location_hint.yml +2 -0
  46. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions.yml +2 -0
  47. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions_with_a_location_hint.yml +2 -0
  48. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_sessions_with_a_location_hint.yml +2 -0
  49. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/with_an_addendum_to_the_user_agent_string/should_append_the_addendum_to_the_user_agent_header.yml +2 -0
  50. data/spec/cassettes/OpenTok_Signals/receives_a_valid_response_for_a_connection.yml +2 -0
  51. data/spec/cassettes/OpenTok_Signals/receives_a_valid_response_for_all_connections.yml +2 -0
  52. data/spec/cassettes/OpenTok_Sip/receives_a_valid_response.yml +2 -0
  53. data/spec/cassettes/OpenTok_Streams/get_all_streams_information.yml +2 -0
  54. data/spec/cassettes/OpenTok_Streams/get_specific_stream_information.yml +2 -0
  55. data/spec/cassettes/OpenTok_Streams/layout_working_on_two_stream_list.yml +2 -0
  56. data/spec/opentok/archives_spec.rb +29 -0
  57. data/spec/opentok/broadcasts_spec.rb +56 -1
  58. data/spec/opentok/client_spec.rb +51 -0
  59. data/spec/opentok/opentok_spec.rb +21 -0
  60. metadata +12 -6
  61. data/.travis.yml +0 -17
@@ -7,7 +7,7 @@ module OpenTok
7
7
  # The time at which the archive was created, in milliseconds since the UNIX epoch.
8
8
  #
9
9
  # @attr [string] duration
10
- # The duration of the archive, in milliseconds.
10
+ # The duration of the archive, in seconds.
11
11
  #
12
12
  # @attr [string] id
13
13
  # The archive ID.
@@ -49,12 +49,16 @@ module OpenTok
49
49
  # this property and set the outputMode property to "individual", the call the method
50
50
  # results in an error.
51
51
  # @option options [Hash] :layout Specify this to assign the initial layout type for
52
- # the archive. This applies only to composed archives. This is a hash containing two keys:
53
- # <code>:type</code> and <code>:stylesheet<code>. Valid values for <code>:type</code> are
54
- # "bestFit" (best fit), "custom" (custom), "horizontalPresentation" (horizontal presentation),
52
+ # the archive. This applies only to composed archives. This is a hash containing three keys:
53
+ # <code>:type</code>, <code>:stylesheet<code> and <code>:screenshare_type</code>.
54
+ # Valid values for <code>:type</code> are "bestFit" (best fit), "custom" (custom),
55
+ # "horizontalPresentation" (horizontal presentation),
55
56
  # "pip" (picture-in-picture), and "verticalPresentation" (vertical presentation)).
56
57
  # If you specify a "custom" layout type, set the <code>:stylesheet</code> key to the
57
58
  # stylesheet (CSS). (For other layout types, do not set the <code>:stylesheet</code> key.)
59
+ # Valid values for <code>:screenshare_type</code> are "bestFit", "pip",
60
+ # "verticalPresentation", "horizontalPresentation". This property is optional.
61
+ # If it is specified, then the <code>:type</code> property **must** be set to "bestFit".
58
62
  # If you do not specify an initial layout type, the archive uses the best fit
59
63
  # layout type. For more information, see
60
64
  # {https://tokbox.com/developer/guides/archiving/layout-control.html Customizing
@@ -178,6 +182,11 @@ module OpenTok
178
182
  # The stylesheet for a custom layout. Set this parameter
179
183
  # if you set <code>type</code> to <code>"custom"</code>. Otherwise, leave it undefined.
180
184
  #
185
+ # @option options [String] :screenshare_type
186
+ # The screenshare layout type. Set this to "bestFit", "pip", "verticalPresentation" or
187
+ # "horizonalPresentation". If this is defined, then the <code>type</code> parameter
188
+ # must be set to <code>"bestFit"</code>.
189
+ #
181
190
  # @raise [ArgumentError]
182
191
  # The archive_id or options parameter is empty. Or the "custom"
183
192
  # type was specified without a stylesheet option. Or a stylesheet was passed in for a
@@ -208,9 +217,12 @@ module OpenTok
208
217
  raise ArgumentError, "archive_id not provided" if archive_id.to_s.empty?
209
218
  type = options[:type]
210
219
  raise ArgumentError, "custom type must have a stylesheet" if (type.eql? "custom") && (!options.key? :stylesheet)
211
- valid_non_custom_type = ["bestFit","horizontalPresentation","pip", "verticalPresentation", ""].include? type
212
- raise ArgumentError, "type is not valid or stylesheet not needed" if !valid_non_custom_type
220
+ valid_non_custom_layouts = ["bestFit","horizontalPresentation","pip", "verticalPresentation", ""]
221
+ valid_non_custom_type = valid_non_custom_layouts.include? type
222
+ raise ArgumentError, "type is not valid" if !valid_non_custom_type && !(type.eql? "custom")
213
223
  raise ArgumentError, "type is not valid or stylesheet not needed" if valid_non_custom_type and options.key? :stylesheet
224
+ raise ArgumentError, "screenshare_type is not valid" if options[:screenshare_type] && !valid_non_custom_layouts.include?(options[:screenshare_type])
225
+ raise ArgumentError, "type must be set to 'bestFit' if screenshare_type is defined" if options[:screenshare_type] && type != 'bestFit'
214
226
  response = @client.layout_archive(archive_id, options)
215
227
  (200..300).include? response.code
216
228
  end
@@ -22,13 +22,20 @@ module OpenTok
22
22
  # @param [String] session_id The session ID of the OpenTok session to broadcast.
23
23
  #
24
24
  # @param [Hash] options A hash defining options for the broadcast.
25
- # @option options [Hash] :layout Specify this to assign the initial layout for the broadcast.
26
- # Valid values for the layout (<code>:type</code>) property are "bestFit" (best fit), "custom" (custom),
27
- # "horizontalPresentation" (horizontal presentation), "pip" (picture-in-picture), and
28
- # "verticalPresentation" (vertical presentation)).
29
- # If you specify a (<code>:custom</code>) layout type, set the (<code>:stylesheet</code>) property of the layout object
30
- # to the stylesheet. (For other layout types, do not set a stylesheet property.)
31
- # If you do not specify an initial layout type, the broadcast stream uses the Best Fit layout type.
25
+ #
26
+ # @option options [Hash] :layout Specify this to assign the initial layout type for
27
+ # the broadcast. This is a hash containing three keys:
28
+ # <code>:type</code>, <code>:stylesheet<code> and <code>:screenshare_type</code>.
29
+ # Valid values for <code>:type</code> are "bestFit" (best fit), "custom" (custom),
30
+ # "horizontalPresentation" (horizontal presentation),
31
+ # "pip" (picture-in-picture), and "verticalPresentation" (vertical presentation)).
32
+ # If you specify a "custom" layout type, set the <code>:stylesheet</code> key to the
33
+ # stylesheet (CSS). (For other layout types, do not set the <code>:stylesheet</code> key.)
34
+ # Valid values for <code>:screenshare_type</code> are "bestFit", "pip",
35
+ # "verticalPresentation", "horizontalPresentation". This property is optional.
36
+ # If it is specified, then the <code>:type</code> property **must** be set to "bestFit".
37
+ # If you do not specify an initial layout type, the broadcast uses the best fit
38
+ # layout type.
32
39
  #
33
40
  # @option options [int] maxDuration
34
41
  # The maximum duration for the broadcast, in seconds. The broadcast will automatically stop when
@@ -112,6 +119,11 @@ module OpenTok
112
119
  # The stylesheet for a custom layout. Set this parameter
113
120
  # if you set <code>type</code> to <code>"custom"</code>. Otherwise, leave it undefined.
114
121
  #
122
+ # @option options [String] :screenshare_type
123
+ # The screenshare layout type. Set this to "bestFit", "pip", "verticalPresentation" or
124
+ # "horizonalPresentation". If this is defined, then the <code>type</code> parameter
125
+ # must be set to <code>"bestFit"</code>.
126
+ #
115
127
  # @raise [OpenTokBroadcastError]
116
128
  # The broadcast layout could not be updated.
117
129
  #
@@ -137,9 +149,12 @@ module OpenTok
137
149
  raise ArgumentError, "broadcast_id not provided" if broadcast_id.to_s.empty?
138
150
  type = options[:type]
139
151
  raise ArgumentError, "custom type must have a stylesheet" if (type.eql? "custom") && (!options.key? :stylesheet)
140
- valid_non_custom_type = ["bestFit","horizontalPresentation","pip", "verticalPresentation", ""].include? type
141
- raise ArgumentError, "type is not valid" if !valid_non_custom_type
152
+ valid_non_custom_layouts = ["bestFit","horizontalPresentation","pip", "verticalPresentation", ""]
153
+ valid_non_custom_type = valid_non_custom_layouts.include? type
154
+ raise ArgumentError, "type is not valid" if !valid_non_custom_type && !(type.eql? "custom")
142
155
  raise ArgumentError, "stylesheet not needed" if valid_non_custom_type and options.key? :stylesheet
156
+ raise ArgumentError, "screenshare_type is not valid" if options[:screenshare_type] && !valid_non_custom_layouts.include?(options[:screenshare_type])
157
+ raise ArgumentError, "type must be set to 'bestFit' if screenshare_type is defined" if options[:screenshare_type] && type != 'bestFit'
143
158
  response = @client.layout_broadcast(broadcast_id, options)
144
159
  (200..300).include? response.code
145
160
  end
@@ -12,18 +12,20 @@ module OpenTok
12
12
  class Client
13
13
  include HTTParty
14
14
 
15
- open_timeout 2 # Set HTTParty default timeout (open/read) to 2 seconds
16
-
17
15
  # TODO: expose a setting for http debugging for developers
18
16
  # debug_output $stdout
19
17
 
20
- def initialize(api_key, api_secret, api_url, ua_addendum="")
18
+ attr_accessor :api_key, :api_secret, :api_url, :ua_addendum, :timeout_length
19
+
20
+ def initialize(api_key, api_secret, api_url, ua_addendum='', opts={})
21
21
  self.class.base_uri api_url
22
22
  self.class.headers({
23
- "User-Agent" => "OpenTok-Ruby-SDK/#{VERSION}" + "-Ruby-Version-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}" + (ua_addendum ? " #{ua_addendum}" : "")
23
+ "User-Agent" => "OpenTok-Ruby-SDK/#{VERSION}" + "-Ruby-Version-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}" + (ua_addendum ? " #{ua_addendum}" : "")
24
24
  })
25
25
  @api_key = api_key
26
26
  @api_secret = api_secret
27
+ @timeout_length = opts[:timeout_length] || 2
28
+ self.class.open_timeout @timeout_length
27
29
  end
28
30
 
29
31
  def generate_jwt(api_key, api_secret)
@@ -2,6 +2,6 @@ module OpenTok
2
2
  API_URL = "https://api.opentok.com"
3
3
  TOKEN_SENTINEL = "T1=="
4
4
  ROLES = { subscriber: "subscriber", publisher: "publisher", moderator: "moderator" }
5
- ARCHIVE_MODES = Set.new([:manual, :always])
5
+ ARCHIVE_MODES = ::Set.new([:manual, :always])
6
6
  AUTH_EXPIRE = 300
7
7
  end
@@ -69,7 +69,7 @@ module OpenTok
69
69
  # @private
70
70
  # don't want these to be mutable, may cause bugs related to inconsistency since these values are
71
71
  # cached in objects that this can create
72
- attr_reader :api_key, :api_secret, :api_url, :ua_addendum
72
+ attr_reader :api_key, :api_secret, :timeout_length, :api_url, :ua_addendum
73
73
 
74
74
  ##
75
75
  # Create a new OpenTok object.
@@ -79,9 +79,11 @@ module OpenTok
79
79
  # @param [String] api_secret Your OpenTok API key.
80
80
  # @option opts [Symbol] :api_url Do not set this parameter. It is for internal use by TokBox.
81
81
  # @option opts [Symbol] :ua_addendum Do not set this parameter. It is for internal use by TokBox.
82
+ # @option opts [Symbol] :timeout_length Custom timeout in seconds. If not provided, defaults to 2 seconds.
82
83
  def initialize(api_key, api_secret, opts={})
83
84
  @api_key = api_key.to_s()
84
85
  @api_secret = api_secret
86
+ @timeout_length = opts[:timeout_length] || 2
85
87
  @api_url = opts[:api_url] || API_URL
86
88
  @ua_addendum = opts[:ua_addendum]
87
89
  end
@@ -212,7 +214,7 @@ module OpenTok
212
214
 
213
215
  protected
214
216
  def client
215
- @client ||= Client.new api_key, api_secret, api_url, ua_addendum
217
+ @client ||= Client.new api_key, api_secret, api_url, ua_addendum, timeout_length: @timeout_length
216
218
  end
217
219
 
218
220
  end
@@ -1,4 +1,4 @@
1
1
  module OpenTok
2
2
  # @private
3
- VERSION = '4.0.0'
3
+ VERSION = '4.2.0'
4
4
  end
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  # spec.add_development_dependency "debugger", "~> 1.6.6"
28
28
 
29
29
  spec.add_dependency "addressable", "~> 2.3" # 2.3.0 <= version < 3.0.0
30
- spec.add_dependency "httparty", ">= 0.15.5"
30
+ spec.add_dependency "httparty", ">= 0.18.0"
31
31
  spec.add_dependency "activesupport", ">= 2.0"
32
32
  spec.add_dependency "jwt", ">= 1.5.6"
33
33
  end
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.opentok.com/v2/project/123456/archive
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"sessionId":"SESSIONID","layout":{"type":"bestFit","screenshare_type":"verticalPresentation"}}'
9
+ headers:
10
+ User-Agent:
11
+ - OpenTok-Ruby-SDK/<%= version %>
12
+ X-Opentok-Auth:
13
+ - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Content-Type:
15
+ - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx
25
+ Date:
26
+ - Fri, 17 Jan 2020 21:15:36 GMT
27
+ Content-Type:
28
+ - application/json
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "createdAt" : 1395183243556,
38
+ "duration" : 0,
39
+ "id" : "30b3ebf1-ba36-4f5b-8def-6f70d9986fe9",
40
+ "name" : "",
41
+ "partnerId" : 123456,
42
+ "reason" : "",
43
+ "sessionId" : "SESSIONID",
44
+ "size" : 0,
45
+ "status" : "started",
46
+ "url" : null
47
+ }
48
+ http_version:
49
+ recorded_at: Tue, 26 Jan 2021 09:01:36 GMT
50
+ recorded_with: VCR 5.0.0
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 204
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -10,6 +10,8 @@ http_interactions:
10
10
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
11
11
  Content-Type:
12
12
  - application/json
13
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
14
+ Accept: "*/*"
13
15
  response:
14
16
  status:
15
17
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -11,6 +11,8 @@ http_interactions:
11
11
  - OpenTok-Ruby-SDK/<%= version %>
12
12
  X-Opentok-Auth:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
15
+ Accept: "*/*"
14
16
  response:
15
17
  status:
16
18
  code: 200
@@ -13,6 +13,8 @@ http_interactions:
13
13
  - eyJpc3QiOiJwcm9qZWN0IiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiIxMjM0NTYiLCJpYXQiOjE0OTI1MTA2NjAsImV4cCI6MTQ5MjUxMDk2MH0.BplMVhJWx4ld7KLKXqEmow6MjNPPFw9W8IHCMfeb120
14
14
  Content-Type:
15
15
  - application/json
16
+ Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
+ Accept: "*/*"
16
18
  response:
17
19
  status:
18
20
  code: 200