opentok 0.1.3 → 2.2.0
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.
- checksums.yaml +4 -4
- data/.gitignore +16 -2
- data/.travis.yml +6 -0
- data/.yardopts +1 -0
- data/CONTRIBUTING.md +47 -0
- data/DEVELOPING.md +91 -0
- data/LICENSE +19 -5
- data/README.md +170 -53
- data/Rakefile +10 -5
- data/doc/OpenTok.html +411 -0
- data/doc/OpenTok/Archive.html +1320 -0
- data/doc/OpenTok/ArchiveList.html +216 -0
- data/doc/OpenTok/Archives.html +1028 -0
- data/doc/OpenTok/Client.html +695 -0
- data/doc/OpenTok/OpenTok.html +1046 -0
- data/doc/OpenTok/OpenTokArchiveError.html +142 -0
- data/doc/OpenTok/OpenTokAuthenticationError.html +143 -0
- data/doc/OpenTok/OpenTokError.html +138 -0
- data/doc/OpenTok/Session.html +665 -0
- data/doc/OpenTok/TokenGenerator.html +204 -0
- data/doc/OpenTok/TokenGenerator/ClassMethods.html +187 -0
- data/doc/README.md +15 -0
- data/doc/_index.html +182 -0
- data/doc/class_list.html +54 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +87 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +87 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +178 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +227 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/opentok.rb +3 -14
- data/lib/opentok/archive.rb +92 -0
- data/lib/opentok/archive_list.rb +17 -0
- data/lib/opentok/archives.rb +120 -0
- data/lib/opentok/client.rb +125 -0
- data/lib/opentok/constants.rb +5 -0
- data/lib/opentok/exceptions.rb +10 -0
- data/lib/opentok/opentok.rb +174 -0
- data/lib/opentok/session.rb +76 -0
- data/lib/opentok/token_generator.rb +101 -0
- data/lib/opentok/version.rb +4 -0
- data/opentok.gemspec +29 -22
- data/sample/Archiving/Gemfile +4 -0
- data/sample/Archiving/README.md +212 -0
- data/sample/Archiving/archiving_sample.rb +80 -0
- data/sample/Archiving/public/css/sample.css +22 -0
- data/sample/Archiving/public/img/archiving-off.png +0 -0
- data/sample/Archiving/public/img/archiving-on-idle.png +0 -0
- data/sample/Archiving/public/img/archiving-on-message.png +0 -0
- data/sample/Archiving/public/js/host.js +37 -0
- data/sample/Archiving/public/js/participant.js +13 -0
- data/sample/Archiving/views/history.erb +65 -0
- data/sample/Archiving/views/host.erb +69 -0
- data/sample/Archiving/views/index.erb +48 -0
- data/sample/Archiving/views/layout.erb +29 -0
- data/sample/Archiving/views/participant.erb +55 -0
- data/sample/HelloWorld/Gemfile +4 -0
- data/sample/HelloWorld/README.md +123 -0
- data/sample/HelloWorld/hello_world.rb +27 -0
- data/sample/HelloWorld/public/js/helloworld.js +32 -0
- data/sample/HelloWorld/views/index.erb +21 -0
- data/spec/cassettes/OpenTok_Archives/should_create_archives.yml +48 -0
- data/spec/cassettes/OpenTok_Archives/should_create_named_archives.yml +49 -0
- data/spec/cassettes/OpenTok_Archives/should_delete_an_archive_by_id.yml +32 -0
- data/spec/cassettes/OpenTok_Archives/should_find_archives_by_id.yml +46 -0
- data/spec/cassettes/OpenTok_Archives/should_stop_archives.yml +48 -0
- data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_all_archives.yml +104 -0
- data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_archives_with_an_offset.yml +71 -0
- data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_count_number_of_archives.yml +60 -0
- data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_part_of_the_archives_when_using_offset_and_count.yml +82 -0
- data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_default_sessions.yml +39 -0
- data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_relayed_media_sessions.yml +39 -0
- data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_relayed_media_sessions_with_a_location_hint.yml +39 -0
- data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions.yml +39 -0
- data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions_for_invalid_media_modes.yml +39 -0
- data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions_with_a_location_hint.yml +39 -0
- data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_sessions_with_a_location_hint.yml +39 -0
- data/spec/matchers/token.rb +48 -0
- data/spec/opentok/archives_spec.rb +91 -0
- data/spec/opentok/opentok_spec.rb +144 -0
- data/spec/opentok/session_spec.rb +71 -0
- data/spec/shared/opentok_generates_tokens.rb +62 -0
- data/spec/shared/session_generates_tokens.rb +63 -0
- data/spec/spec_helper.rb +6 -7
- metadata +197 -59
- data/.rspec +0 -3
- data/CHANGES +0 -33
- data/doc/reference.md +0 -122
- data/lib/open_tok/archive.rb +0 -53
- data/lib/open_tok/archive_timeline_event.rb +0 -22
- data/lib/open_tok/archive_video_resource.rb +0 -28
- data/lib/open_tok/exception.rb +0 -50
- data/lib/open_tok/open_tok_sdk.rb +0 -198
- data/lib/open_tok/request.rb +0 -63
- data/lib/open_tok/role_constants.rb +0 -18
- data/lib/open_tok/session.rb +0 -25
- data/lib/open_tok/session_property_constants.rb +0 -30
- data/lib/open_tok/utils.rb +0 -10
- data/lib/open_tok/version.rb +0 -5
- data/sample/sample.rb +0 -26
- data/spec/cassettes/archives.yml +0 -83
- data/spec/cassettes/deleteArchive.yml +0 -91
- data/spec/cassettes/invalidSession.yml +0 -41
- data/spec/cassettes/session.yml +0 -46
- data/spec/cassettes/stitchArchive.yml +0 -42
- data/spec/opentok_exception_spec.rb +0 -38
- data/spec/opentok_spec.rb +0 -135
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module OpenTok
|
|
3
|
-
|
|
4
|
-
##
|
|
5
|
-
# Preferences that could be defined while creating a session
|
|
6
|
-
module SessionPropertyConstants
|
|
7
|
-
|
|
8
|
-
# @deprecated (feature deleted in OpenTok v0.91.48)
|
|
9
|
-
# @param [Boolean]
|
|
10
|
-
ECHOSUPPRESSION_ENABLED = 'echoSuppression.enabled'
|
|
11
|
-
|
|
12
|
-
# @deprecated (feature deleted in OpenTok v0.91.48)
|
|
13
|
-
# @param [Integer]
|
|
14
|
-
MULTIPLEXER_NUMOUTPUTSTREAMS = 'multiplexer.numOutputStreams'
|
|
15
|
-
|
|
16
|
-
# @deprecated (feature deleted in OpenTok v0.91.48)
|
|
17
|
-
# @param [Integer]
|
|
18
|
-
MULTIPLEXER_SWITCHTYPE = 'multiplexer.switchType'
|
|
19
|
-
|
|
20
|
-
# @deprecated (feature deleted in OpenTok v0.91.48)
|
|
21
|
-
# @param [Integer]
|
|
22
|
-
MULTIPLEXER_SWITCHTIMEOUT = 'multiplexer.switchTimeout'
|
|
23
|
-
|
|
24
|
-
# Whether the session's streams will be transmitted directly between peers
|
|
25
|
-
# @param [disabled, enabled]
|
|
26
|
-
P2P_PREFERENCE = 'p2p.preference'
|
|
27
|
-
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
end
|
data/lib/open_tok/utils.rb
DELETED
data/lib/open_tok/version.rb
DELETED
data/sample/sample.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'opentok'
|
|
2
|
-
|
|
3
|
-
API_KEY = '' # See https://dashboard.tokbox.com/
|
|
4
|
-
API_SECRET = '' # See https://dashboard.tokbox.com/
|
|
5
|
-
|
|
6
|
-
OTSDK = OpenTok::OpenTokSDK.new API_KEY, API_SECRET
|
|
7
|
-
|
|
8
|
-
# Create an OpenTok server-enabled session
|
|
9
|
-
sessionId = OTSDK.createSession().to_s
|
|
10
|
-
print sessionId + "\n"
|
|
11
|
-
|
|
12
|
-
# Create a peer-to-peer session
|
|
13
|
-
sessionProperties = {OpenTok::SessionPropertyConstants::P2P_PREFERENCE => "enabled"} # or disabled
|
|
14
|
-
sessionId = OTSDK.createSession( nil, sessionProperties ).to_s
|
|
15
|
-
print sessionId + "\n"
|
|
16
|
-
|
|
17
|
-
# Generate a publisher token
|
|
18
|
-
token = OTSDK.generateToken :session_id => sessionId
|
|
19
|
-
print token + "\n"
|
|
20
|
-
|
|
21
|
-
# Generate a token with moderator role and connection data
|
|
22
|
-
role = OpenTok::RoleConstants::MODERATOR
|
|
23
|
-
connection_data = "username=Bob,level=4, score=8888888888"
|
|
24
|
-
token = OTSDK.generateToken :session_id => sessionId, :role => role, :connection_data => connection_data
|
|
25
|
-
print token + "\n"
|
|
26
|
-
|
data/spec/cassettes/archives.yml
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: get
|
|
5
|
-
uri: https://api.opentok.com/archive/getmanifest/200567af-0726-4e93-883b-fe0426d6310a
|
|
6
|
-
body:
|
|
7
|
-
encoding: US-ASCII
|
|
8
|
-
string: ''
|
|
9
|
-
headers:
|
|
10
|
-
Accept:
|
|
11
|
-
- ! '*/*'
|
|
12
|
-
User-Agent:
|
|
13
|
-
- Ruby
|
|
14
|
-
X-Tb-Token-Auth:
|
|
15
|
-
- T1==cGFydG5lcl9pZD00NTk3ODImc2lnPWVjNjA1YTZhNzI5MDk5MzU5NTI1YWM2ZTczNDY1ZTQ3MzEwMWFkY2Q6cm9sZT1tb2RlcmF0b3Imc2Vzc2lvbl9pZD0xX01YNDBOVGszT0RKLU1USTNMakF1TUM0eGZsUjFaU0JUWlhBZ01EUWdNVFE2TlRNNk1ESWdVRVJVSURJd01USi1NQzQxTWpFeE9ERXpmZyZjcmVhdGVfdGltZT0xMzQ2ODAxMjQ1Jm5vbmNlPTAuMjUwMTIwMTEyNzkzODkwMjQ=
|
|
16
|
-
response:
|
|
17
|
-
status:
|
|
18
|
-
code: 200
|
|
19
|
-
message: OK
|
|
20
|
-
headers:
|
|
21
|
-
Server:
|
|
22
|
-
- nginx
|
|
23
|
-
Date:
|
|
24
|
-
- Tue, 04 Sep 2012 23:27:13 GMT
|
|
25
|
-
Content-Type:
|
|
26
|
-
- text/xml; charset=utf-8
|
|
27
|
-
Connection:
|
|
28
|
-
- keep-alive
|
|
29
|
-
Pragma:
|
|
30
|
-
- no-cache
|
|
31
|
-
Cache-Control:
|
|
32
|
-
- no-cache
|
|
33
|
-
Content-Length:
|
|
34
|
-
- '510'
|
|
35
|
-
body:
|
|
36
|
-
encoding: US-ASCII
|
|
37
|
-
string: ! "<manifest version=\"0.1\" archiveid=\"200567af-0726-4e93-883b-fe0426d6310a\"
|
|
38
|
-
title=\"1346797109799\">\n <resources>\n <video id=\"bbf108c9-7237-49ae-9057-2ccdb71cf675\"
|
|
39
|
-
length=\"18734\" name=\"\"/>\n <video id=\"3f0d3ec6-4a41-4cc5-9e38-f9e6375ba5fd\"
|
|
40
|
-
length=\"18743\" name=\"\"/>\n </resources>\n <timeline>\n <event
|
|
41
|
-
type=\"PLAY\" id=\"3f0d3ec6-4a41-4cc5-9e38-f9e6375ba5fd\" offset=\"1255\"
|
|
42
|
-
data=\"\" />\n <event type=\"PLAY\" id=\"bbf108c9-7237-49ae-9057-2ccdb71cf675\"
|
|
43
|
-
offset=\"1263\" data=\"\" />\n </timeline>\n</manifest>\n\n\n"
|
|
44
|
-
http_version:
|
|
45
|
-
recorded_at: Tue, 04 Sep 2012 23:27:25 GMT
|
|
46
|
-
- request:
|
|
47
|
-
method: get
|
|
48
|
-
uri: https://api.opentok.com/archive/url/200567af-0726-4e93-883b-fe0426d6310a/bbf108c9-7237-49ae-9057-2ccdb71cf675
|
|
49
|
-
body:
|
|
50
|
-
encoding: US-ASCII
|
|
51
|
-
string: ''
|
|
52
|
-
headers:
|
|
53
|
-
Accept:
|
|
54
|
-
- ! '*/*'
|
|
55
|
-
User-Agent:
|
|
56
|
-
- Ruby
|
|
57
|
-
X-Tb-Token-Auth:
|
|
58
|
-
- T1==cGFydG5lcl9pZD00NTk3ODImc2lnPTU2MDY5Y2VmMTAzY2M4YTUzY2RlNTZlZTAzNzdjODIyNTk0MTU5MzM6cm9sZT1tb2RlcmF0b3Imc2Vzc2lvbl9pZD0xX01YNDBOVGszT0RKLU1USTNMakF1TUM0eGZsUjFaU0JUWlhBZ01EUWdNVFE2TlRNNk1ESWdVRVJVSURJd01USi1NQzQxTWpFeE9ERXpmZyZjcmVhdGVfdGltZT0xMzQ2ODAxMjQ1Jm5vbmNlPTAuNDY2MDM2NDg4Nzc5NDgy
|
|
59
|
-
response:
|
|
60
|
-
status:
|
|
61
|
-
code: 200
|
|
62
|
-
message: OK
|
|
63
|
-
headers:
|
|
64
|
-
Server:
|
|
65
|
-
- nginx
|
|
66
|
-
Date:
|
|
67
|
-
- Tue, 04 Sep 2012 23:27:13 GMT
|
|
68
|
-
Content-Type:
|
|
69
|
-
- text/html; charset=utf-8
|
|
70
|
-
Connection:
|
|
71
|
-
- keep-alive
|
|
72
|
-
Pragma:
|
|
73
|
-
- no-cache
|
|
74
|
-
Cache-Control:
|
|
75
|
-
- no-cache
|
|
76
|
-
Content-Length:
|
|
77
|
-
- '229'
|
|
78
|
-
body:
|
|
79
|
-
encoding: US-ASCII
|
|
80
|
-
string: https://s3.amazonaws.com/tokbox.com.production/459782/200567af-0726-4e93-883b-fe0426d6310a/bbf108c9-7237-49ae-9057-2ccdb71cf675.flv?Signature=Hn7ti7U2yG8tehW1ypD1R%2FGUvrg%3D&Expires=1346804833&AWSAccessKeyId=AKIAI6LQCPIXYVWCQV6Q
|
|
81
|
-
http_version:
|
|
82
|
-
recorded_at: Tue, 04 Sep 2012 23:27:25 GMT
|
|
83
|
-
recorded_with: VCR 2.2.4
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: https://api.opentok.com/hl/archive/delete/200567af-0726-4e93-883b-fe0426d6310a
|
|
6
|
-
body:
|
|
7
|
-
encoding: US-ASCII
|
|
8
|
-
string: test=none
|
|
9
|
-
headers:
|
|
10
|
-
Accept:
|
|
11
|
-
- ! '*/*'
|
|
12
|
-
User-Agent:
|
|
13
|
-
- Ruby
|
|
14
|
-
Content-Type:
|
|
15
|
-
- application/x-www-form-urlencoded
|
|
16
|
-
X-Tb-Token-Auth:
|
|
17
|
-
- T1==cGFydG5lcl9pZD00NTk3ODImc2lnPTEyMTU4N2FiMGU3YmQzZTVmNjVjOGQxNjQ1NGQ4Y2UxM2RjZTI5YzI6cm9sZT1wdWJsaXNoZXImc2Vzc2lvbl9pZD0xX01YNDBOVGszT0RKLU1USTNMakF1TUM0eGZsUjFaU0JUWlhBZ01EUWdNVFE2TlRNNk1ESWdVRVJVSURJd01USi1NQzQxTWpFeE9ERXpmZyZjcmVhdGVfdGltZT0xMzQ3MDU0OTc3Jm5vbmNlPTAuNTAzNjU0NzIyODY0NzU1Mg==
|
|
18
|
-
response:
|
|
19
|
-
status:
|
|
20
|
-
code: 200
|
|
21
|
-
message: OK
|
|
22
|
-
headers:
|
|
23
|
-
Server:
|
|
24
|
-
- nginx
|
|
25
|
-
Date:
|
|
26
|
-
- Fri, 07 Sep 2012 21:56:12 GMT
|
|
27
|
-
Content-Type:
|
|
28
|
-
- text/xml; charset=utf-8
|
|
29
|
-
Connection:
|
|
30
|
-
- keep-alive
|
|
31
|
-
Pragma:
|
|
32
|
-
- no-cache
|
|
33
|
-
Cache-Control:
|
|
34
|
-
- no-cache
|
|
35
|
-
Content-Length:
|
|
36
|
-
- '124'
|
|
37
|
-
body:
|
|
38
|
-
encoding: US-ASCII
|
|
39
|
-
string: ! '<Errors><error code="404"><itemNotFound message="Archive 200567af-0726-4e93-883b-fe0426d6310a
|
|
40
|
-
not found"/></error></Errors>
|
|
41
|
-
|
|
42
|
-
'
|
|
43
|
-
http_version:
|
|
44
|
-
recorded_at: Fri, 07 Sep 2012 21:56:17 GMT
|
|
45
|
-
- request:
|
|
46
|
-
method: get
|
|
47
|
-
uri: https://api.opentok.com/hl/archive/delete/200567af-0726-4e93-883b-fe0426d6310a
|
|
48
|
-
body:
|
|
49
|
-
encoding: US-ASCII
|
|
50
|
-
string: ''
|
|
51
|
-
headers:
|
|
52
|
-
Accept:
|
|
53
|
-
- ! '*/*'
|
|
54
|
-
User-Agent:
|
|
55
|
-
- Ruby
|
|
56
|
-
X-Tb-Token-Auth:
|
|
57
|
-
- T1==cGFydG5lcl9pZD00NTk3ODImc2lnPTFlNGEyMjBlN2JhOWI1YjJlM2I3ZDcyMDg1MzVkNzkwN2UzMDM1NjA6cm9sZT1wdWJsaXNoZXImc2Vzc2lvbl9pZD0xX01YNDBOVGszT0RKLU1USTNMakF1TUM0eGZsUjFaU0JUWlhBZ01EUWdNVFE2TlRNNk1ESWdVRVJVSURJd01USi1NQzQxTWpFeE9ERXpmZyZjcmVhdGVfdGltZT0xMzUxNTUzNzk0Jm5vbmNlPTAuMTgyMjczODY3NTc2NjAyOA==
|
|
58
|
-
response:
|
|
59
|
-
status:
|
|
60
|
-
code: 404
|
|
61
|
-
message: Not Found
|
|
62
|
-
headers:
|
|
63
|
-
Server:
|
|
64
|
-
- nginx
|
|
65
|
-
Date:
|
|
66
|
-
- Mon, 29 Oct 2012 23:36:32 GMT
|
|
67
|
-
Content-Type:
|
|
68
|
-
- text/html; charset=utf-8
|
|
69
|
-
Connection:
|
|
70
|
-
- keep-alive
|
|
71
|
-
Pragma:
|
|
72
|
-
- no-cache
|
|
73
|
-
Cache-Control:
|
|
74
|
-
- no-cache
|
|
75
|
-
Content-Length:
|
|
76
|
-
- '792'
|
|
77
|
-
body:
|
|
78
|
-
encoding: US-ASCII
|
|
79
|
-
string: ! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html
|
|
80
|
-
xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n
|
|
81
|
-
<title>Server Error 404</title>\n<!-- CSS Imports -->\n<link rel=\"stylesheet\"
|
|
82
|
-
href=\"/error/style/black.css\" type=\"text/css\" media=\"screen\" />\n\n<!--
|
|
83
|
-
Favorite Icons -->\n<link rel=\"icon\" href=\"/error/img/favicon.ico\" type=\"image/png\"
|
|
84
|
-
/>\n\n<style type=\"text/css\">\n .red {\n color:#FF0000;\n
|
|
85
|
-
\ }\n .bold {\n font-weight: bold;\n }\n</style>\n</head>\n\n<body>\n
|
|
86
|
-
\ <div id=\"container\">\n <html>\n <head>\n <title>404 Not Found</title>\n
|
|
87
|
-
</head>\n <body>\n <h1>404 Not Found</h1>\n The resource could not be found.<br
|
|
88
|
-
/><br />\n\n\n\n </body>\n</html>\n </div>\n</body>\n</html>\n"
|
|
89
|
-
http_version:
|
|
90
|
-
recorded_at: Mon, 29 Oct 2012 23:36:34 GMT
|
|
91
|
-
recorded_with: VCR 2.2.4
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: https://api.opentok.com/session/create
|
|
6
|
-
body:
|
|
7
|
-
encoding: US-ASCII
|
|
8
|
-
string: partner_id=0&location=localhost
|
|
9
|
-
headers:
|
|
10
|
-
Accept:
|
|
11
|
-
- ! '*/*'
|
|
12
|
-
User-Agent:
|
|
13
|
-
- Ruby
|
|
14
|
-
Content-Type:
|
|
15
|
-
- application/x-www-form-urlencoded
|
|
16
|
-
X-Tb-Partner-Auth:
|
|
17
|
-
- ! '0:'
|
|
18
|
-
response:
|
|
19
|
-
status:
|
|
20
|
-
code: 200
|
|
21
|
-
message: OK
|
|
22
|
-
headers:
|
|
23
|
-
Server:
|
|
24
|
-
- nginx
|
|
25
|
-
Date:
|
|
26
|
-
- Tue, 04 Sep 2012 23:27:12 GMT
|
|
27
|
-
Content-Type:
|
|
28
|
-
- text/plain; charset=UTF-8
|
|
29
|
-
Transfer-Encoding:
|
|
30
|
-
- chunked
|
|
31
|
-
Connection:
|
|
32
|
-
- keep-alive
|
|
33
|
-
body:
|
|
34
|
-
encoding: US-ASCII
|
|
35
|
-
string: ! '<Errors><error code="403"><notAuthorized message="The API secret
|
|
36
|
-
did not match, Invalid credentials passed"/></error></Errors>
|
|
37
|
-
|
|
38
|
-
'
|
|
39
|
-
http_version:
|
|
40
|
-
recorded_at: Tue, 04 Sep 2012 23:27:24 GMT
|
|
41
|
-
recorded_with: VCR 2.2.4
|
data/spec/cassettes/session.yml
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: https://api.opentok.com/session/create
|
|
6
|
-
body:
|
|
7
|
-
encoding: US-ASCII
|
|
8
|
-
string: partner_id=459782&location=localhost
|
|
9
|
-
headers:
|
|
10
|
-
Accept:
|
|
11
|
-
- ! '*/*'
|
|
12
|
-
User-Agent:
|
|
13
|
-
- Ruby
|
|
14
|
-
Content-Type:
|
|
15
|
-
- application/x-www-form-urlencoded
|
|
16
|
-
X-Tb-Partner-Auth:
|
|
17
|
-
- 459782:***REMOVED***
|
|
18
|
-
response:
|
|
19
|
-
status:
|
|
20
|
-
code: 200
|
|
21
|
-
message: OK
|
|
22
|
-
headers:
|
|
23
|
-
Server:
|
|
24
|
-
- nginx
|
|
25
|
-
Date:
|
|
26
|
-
- Tue, 04 Sep 2012 23:27:12 GMT
|
|
27
|
-
Content-Type:
|
|
28
|
-
- text/xml; charset=utf-8
|
|
29
|
-
Connection:
|
|
30
|
-
- keep-alive
|
|
31
|
-
Pragma:
|
|
32
|
-
- no-cache
|
|
33
|
-
Cache-Control:
|
|
34
|
-
- no-cache
|
|
35
|
-
Access-Control-Allow-Origin:
|
|
36
|
-
- ! '*'
|
|
37
|
-
Content-Length:
|
|
38
|
-
- '294'
|
|
39
|
-
body:
|
|
40
|
-
encoding: US-ASCII
|
|
41
|
-
string: ! "<Sessions>\n <Session>\n <session_id>2_MX40NTk3ODJ-fjIwMTItMDktMDQgMjM6Mjc6MTIuNzY3ODY5KzAwOjAwfjAuNTQzNTEwNTE4NjQxfg</session_id>\n
|
|
42
|
-
\ <partner_id>459782</partner_id>\n <create_dt>2012-09-04 23:27:12.767869+00:00</create_dt>\n
|
|
43
|
-
\ <session_status></session_status>\n </Session>\n</Sessions>\n"
|
|
44
|
-
http_version:
|
|
45
|
-
recorded_at: Tue, 04 Sep 2012 23:27:24 GMT
|
|
46
|
-
recorded_with: VCR 2.2.4
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: https://api.opentok.com/hl/archive/200567af-0726-4e93-883b-fe0426d6310a/stitch
|
|
6
|
-
body:
|
|
7
|
-
encoding: US-ASCII
|
|
8
|
-
string: test=none
|
|
9
|
-
headers:
|
|
10
|
-
Accept:
|
|
11
|
-
- ! '*/*'
|
|
12
|
-
User-Agent:
|
|
13
|
-
- Ruby
|
|
14
|
-
Content-Type:
|
|
15
|
-
- application/x-www-form-urlencoded
|
|
16
|
-
X-Tb-Partner-Auth:
|
|
17
|
-
- 459782:***REMOVED***
|
|
18
|
-
response:
|
|
19
|
-
status:
|
|
20
|
-
code: 201
|
|
21
|
-
message: Created
|
|
22
|
-
headers:
|
|
23
|
-
Server:
|
|
24
|
-
- nginx
|
|
25
|
-
Date:
|
|
26
|
-
- Tue, 04 Sep 2012 23:27:14 GMT
|
|
27
|
-
Content-Type:
|
|
28
|
-
- text/plain
|
|
29
|
-
Connection:
|
|
30
|
-
- keep-alive
|
|
31
|
-
Location:
|
|
32
|
-
- https://tokbox.com.production.s3.amazonaws.com/459782%2F200567af-0726-4e93-883b-fe0426d6310a%2Fstitch.mp4?Expires=1346887634&AWSAccessKeyId=AKIAI6LQCPIXYVWCQV6Q&Signature=6%2BihfyAJiQGjmf%2FHV1BGCe14rr8%3D
|
|
33
|
-
X-Tb-Host:
|
|
34
|
-
- oms407-oak.tokbox.com
|
|
35
|
-
Content-Length:
|
|
36
|
-
- '0'
|
|
37
|
-
body:
|
|
38
|
-
encoding: US-ASCII
|
|
39
|
-
string: ''
|
|
40
|
-
http_version:
|
|
41
|
-
recorded_at: Tue, 04 Sep 2012 23:27:26 GMT
|
|
42
|
-
recorded_with: VCR 2.2.4
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'rexml/document'
|
|
3
|
-
require 'open_tok/exception'
|
|
4
|
-
|
|
5
|
-
describe OpenTok::OpenTokException do
|
|
6
|
-
|
|
7
|
-
subject { OpenTok::OpenTokException }
|
|
8
|
-
|
|
9
|
-
describe "when inhereted" do
|
|
10
|
-
it "should include the subclass in the internal structure" do
|
|
11
|
-
length = OpenTok::OpenTokException.exceptions.length
|
|
12
|
-
Foo = Class.new OpenTok::OpenTokException do
|
|
13
|
-
def self.http_code
|
|
14
|
-
1000
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
OpenTok::OpenTokException.exceptions.length.should eq length+1
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe "when creating an exception" do
|
|
22
|
-
|
|
23
|
-
let(:body_error) { "<Errors><error code='404'><itemNotFound message='Archive foo not found'/></error></Errors>"}
|
|
24
|
-
|
|
25
|
-
let(:body_unknown_error) { "<Errors><error code='100'></error></Errors>"}
|
|
26
|
-
|
|
27
|
-
it "should find the relevant child using the HTTP error code" do
|
|
28
|
-
response = REXML::Document.new body_error
|
|
29
|
-
OpenTok::OpenTokException.from_error(response).should be_instance_of OpenTok::OpenTokNotFound
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "should return the general exception if unknown HTTP error code" do
|
|
33
|
-
response = REXML::Document.new body_unknown_error
|
|
34
|
-
OpenTok::OpenTokException.from_error(response).should be_instance_of OpenTok::OpenTokException
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
end
|
data/spec/opentok_spec.rb
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe OpenTok do
|
|
4
|
-
|
|
5
|
-
let(:api_key) { '459782' }
|
|
6
|
-
let(:api_secret) { '***REMOVED***' }
|
|
7
|
-
let(:api_url) { 'http://api.opentok.com/hl' }
|
|
8
|
-
let(:host) { 'localhost' }
|
|
9
|
-
|
|
10
|
-
subject { OpenTok::OpenTokSDK.new api_key, api_secret }
|
|
11
|
-
|
|
12
|
-
describe "test Initializers" do
|
|
13
|
-
it "should be backwards compatible if user set api URL with no effect" do
|
|
14
|
-
opentok = OpenTok::OpenTokSDK.new api_key, api_secret, {:api_url => "bla bla"}
|
|
15
|
-
opentok.api_url.should eq api_url
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should be OpenTok SDK Object" do
|
|
19
|
-
subject.should be_instance_of OpenTok::OpenTokSDK
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
its(:api_url) { should == api_url }
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
describe "Generate Sessions" do
|
|
26
|
-
use_vcr_cassette "session"
|
|
27
|
-
|
|
28
|
-
let(:opentok) { OpenTok::OpenTokSDK.new api_key, api_secret }
|
|
29
|
-
|
|
30
|
-
it "should generate valid session" do
|
|
31
|
-
session = opentok.create_session host
|
|
32
|
-
session.to_s.should match(/\A[0-9A-z_-]{40,}\Z/)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should generate valid p2p session" do
|
|
36
|
-
# Creating Session object with p2p enabled
|
|
37
|
-
sessionProperties = {OpenTok::SessionPropertyConstants::P2P_PREFERENCE => "enabled"} # or disabled
|
|
38
|
-
session = opentok.createSession( @location, sessionProperties )
|
|
39
|
-
session.to_s.should match(/\A[0-9A-z_-]{40,}\Z/)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
describe "invalid Sessions" do
|
|
44
|
-
use_vcr_cassette "invalidSession"
|
|
45
|
-
it "should raise an exception with an invalid key and secret" do
|
|
46
|
-
invalidOT = OpenTok::OpenTokSDK.new 0, ''
|
|
47
|
-
|
|
48
|
-
expect{
|
|
49
|
-
session = invalidOT.create_session host
|
|
50
|
-
}.to raise_error OpenTok::OpenTokException
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe "Generate Tokens" do
|
|
55
|
-
let(:session) { subject.createSession host }
|
|
56
|
-
|
|
57
|
-
it "should raise error" do
|
|
58
|
-
expect { subject.generateToken({:role=>OpenTok::RoleConstants::MODERATOR}) }.to raise_error
|
|
59
|
-
end
|
|
60
|
-
it "should generate valid token" do
|
|
61
|
-
token = subject.generate_token({:session_id => session, :role=>OpenTok::RoleConstants::MODERATOR})
|
|
62
|
-
token.should match(/(T1==)+[0-9A-z_]+/)
|
|
63
|
-
end
|
|
64
|
-
it "should generate valid token camelCase" do
|
|
65
|
-
token = subject.generateToken({:session_id => session, :role=>OpenTok::RoleConstants::MODERATOR})
|
|
66
|
-
token.should match(/(T1==)+[0-9A-z_]+/)
|
|
67
|
-
end
|
|
68
|
-
it "should be able to set parameters in token" do
|
|
69
|
-
token = subject.generate_token :session_id => session, :role=> OpenTok::RoleConstants::PUBLISHER, :connection_data => "username=Bob,level=4"
|
|
70
|
-
str = token[4..token.length]
|
|
71
|
-
decoded = Base64.decode64(str)
|
|
72
|
-
decoded.should match(/.*username%3DBob.*/)
|
|
73
|
-
decoded.should match(/.*level%3D4.*/)
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
describe "Archiving downloads" do
|
|
79
|
-
use_vcr_cassette "archives"
|
|
80
|
-
let(:api_key) { '459782' }
|
|
81
|
-
let(:api_secret) { '***REMOVED***' }
|
|
82
|
-
let(:opentok) { OpenTok::OpenTokSDK.new api_key, api_secret, {:api_url=>""} }
|
|
83
|
-
let(:opts) { {:partner_id => api_key, :location=>host} }
|
|
84
|
-
|
|
85
|
-
let(:session) { '1_MX40NTk3ODJ-MTI3LjAuMC4xflR1ZSBTZXAgMDQgMTQ6NTM6MDIgUERUIDIwMTJ-MC41MjExODEzfg' }
|
|
86
|
-
let(:token) { opentok.generateToken({:session_id => session, :role=>OpenTok::RoleConstants::MODERATOR}) }
|
|
87
|
-
let(:archiveId) { "200567af-0726-4e93-883b-fe0426d6310a" }
|
|
88
|
-
|
|
89
|
-
it "should have archive resources" do
|
|
90
|
-
otArchive = opentok.getArchiveManifest(archiveId, token)
|
|
91
|
-
otArchiveResource = otArchive.resources[0]
|
|
92
|
-
vid = otArchiveResource.getId()
|
|
93
|
-
vid.should match(/[0-9A-z=]+/)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it "should return download url" do
|
|
97
|
-
otArchive = opentok.get_archive_manifest(archiveId, token)
|
|
98
|
-
otArchiveResource = otArchive.resources[0]
|
|
99
|
-
vid = otArchiveResource.getId()
|
|
100
|
-
url = otArchive.downloadArchiveURL(vid, token)
|
|
101
|
-
url.start_with?('http').should eq true
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
describe "Delete Archives" do
|
|
106
|
-
use_vcr_cassette "deleteArchive"
|
|
107
|
-
let(:api_key) { '459782' }
|
|
108
|
-
let(:api_secret) { '***REMOVED***' }
|
|
109
|
-
let(:opentok) { OpenTok::OpenTokSDK.new api_key, api_secret, {:api_url => ""} }
|
|
110
|
-
let(:session) { '1_MX40NTk3ODJ-MTI3LjAuMC4xflR1ZSBTZXAgMDQgMTQ6NTM6MDIgUERUIDIwMTJ-MC41MjExODEzfg' }
|
|
111
|
-
let(:token) { opentok.generateToken({:session_id => session, :role=>OpenTok::RoleConstants::PUBLISHER}) }
|
|
112
|
-
let(:archiveId) { "200567af-0726-4e93-883b-fe0426d6310a" }
|
|
113
|
-
|
|
114
|
-
it "should raise an Exception on item not found" do
|
|
115
|
-
expect{
|
|
116
|
-
opentok.deleteArchive archiveId, token
|
|
117
|
-
}.to raise_error OpenTok::OpenTokException
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
describe "stitch api" do
|
|
122
|
-
use_vcr_cassette "stitchArchive"
|
|
123
|
-
let(:api_key) { '459782' }
|
|
124
|
-
let(:api_secret) { '***REMOVED***' }
|
|
125
|
-
let(:opentok) { OpenTok::OpenTokSDK.new api_key, api_secret }
|
|
126
|
-
let(:archiveId) { "200567af-0726-4e93-883b-fe0426d6310a" }
|
|
127
|
-
|
|
128
|
-
it "should return stitch url" do
|
|
129
|
-
a = opentok.stitchArchive archiveId
|
|
130
|
-
a[:code].should eq 201
|
|
131
|
-
a[:location].start_with?('http').should be_true
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
end
|