opentok 0.1.3 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|