opentok 0.1.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +16 -2
  3. data/.travis.yml +6 -0
  4. data/.yardopts +1 -0
  5. data/CONTRIBUTING.md +47 -0
  6. data/DEVELOPING.md +91 -0
  7. data/LICENSE +19 -5
  8. data/README.md +170 -53
  9. data/Rakefile +10 -5
  10. data/doc/OpenTok.html +411 -0
  11. data/doc/OpenTok/Archive.html +1320 -0
  12. data/doc/OpenTok/ArchiveList.html +216 -0
  13. data/doc/OpenTok/Archives.html +1028 -0
  14. data/doc/OpenTok/Client.html +695 -0
  15. data/doc/OpenTok/OpenTok.html +1046 -0
  16. data/doc/OpenTok/OpenTokArchiveError.html +142 -0
  17. data/doc/OpenTok/OpenTokAuthenticationError.html +143 -0
  18. data/doc/OpenTok/OpenTokError.html +138 -0
  19. data/doc/OpenTok/Session.html +665 -0
  20. data/doc/OpenTok/TokenGenerator.html +204 -0
  21. data/doc/OpenTok/TokenGenerator/ClassMethods.html +187 -0
  22. data/doc/README.md +15 -0
  23. data/doc/_index.html +182 -0
  24. data/doc/class_list.html +54 -0
  25. data/doc/css/common.css +1 -0
  26. data/doc/css/full_list.css +57 -0
  27. data/doc/css/style.css +339 -0
  28. data/doc/file.README.html +87 -0
  29. data/doc/file_list.html +56 -0
  30. data/doc/frames.html +26 -0
  31. data/doc/index.html +87 -0
  32. data/doc/js/app.js +219 -0
  33. data/doc/js/full_list.js +178 -0
  34. data/doc/js/jquery.js +4 -0
  35. data/doc/method_list.html +227 -0
  36. data/doc/top-level-namespace.html +112 -0
  37. data/lib/opentok.rb +3 -14
  38. data/lib/opentok/archive.rb +92 -0
  39. data/lib/opentok/archive_list.rb +17 -0
  40. data/lib/opentok/archives.rb +120 -0
  41. data/lib/opentok/client.rb +125 -0
  42. data/lib/opentok/constants.rb +5 -0
  43. data/lib/opentok/exceptions.rb +10 -0
  44. data/lib/opentok/opentok.rb +174 -0
  45. data/lib/opentok/session.rb +76 -0
  46. data/lib/opentok/token_generator.rb +101 -0
  47. data/lib/opentok/version.rb +4 -0
  48. data/opentok.gemspec +29 -22
  49. data/sample/Archiving/Gemfile +4 -0
  50. data/sample/Archiving/README.md +212 -0
  51. data/sample/Archiving/archiving_sample.rb +80 -0
  52. data/sample/Archiving/public/css/sample.css +22 -0
  53. data/sample/Archiving/public/img/archiving-off.png +0 -0
  54. data/sample/Archiving/public/img/archiving-on-idle.png +0 -0
  55. data/sample/Archiving/public/img/archiving-on-message.png +0 -0
  56. data/sample/Archiving/public/js/host.js +37 -0
  57. data/sample/Archiving/public/js/participant.js +13 -0
  58. data/sample/Archiving/views/history.erb +65 -0
  59. data/sample/Archiving/views/host.erb +69 -0
  60. data/sample/Archiving/views/index.erb +48 -0
  61. data/sample/Archiving/views/layout.erb +29 -0
  62. data/sample/Archiving/views/participant.erb +55 -0
  63. data/sample/HelloWorld/Gemfile +4 -0
  64. data/sample/HelloWorld/README.md +123 -0
  65. data/sample/HelloWorld/hello_world.rb +27 -0
  66. data/sample/HelloWorld/public/js/helloworld.js +32 -0
  67. data/sample/HelloWorld/views/index.erb +21 -0
  68. data/spec/cassettes/OpenTok_Archives/should_create_archives.yml +48 -0
  69. data/spec/cassettes/OpenTok_Archives/should_create_named_archives.yml +49 -0
  70. data/spec/cassettes/OpenTok_Archives/should_delete_an_archive_by_id.yml +32 -0
  71. data/spec/cassettes/OpenTok_Archives/should_find_archives_by_id.yml +46 -0
  72. data/spec/cassettes/OpenTok_Archives/should_stop_archives.yml +48 -0
  73. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_all_archives.yml +104 -0
  74. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_archives_with_an_offset.yml +71 -0
  75. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_count_number_of_archives.yml +60 -0
  76. data/spec/cassettes/OpenTok_Archives/when_many_archives_are_created/should_return_part_of_the_archives_when_using_offset_and_count.yml +82 -0
  77. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_default_sessions.yml +39 -0
  78. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_relayed_media_sessions.yml +39 -0
  79. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_relayed_media_sessions_with_a_location_hint.yml +39 -0
  80. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions.yml +39 -0
  81. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions_for_invalid_media_modes.yml +39 -0
  82. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_routed_media_sessions_with_a_location_hint.yml +39 -0
  83. data/spec/cassettes/OpenTok_OpenTok/when_initialized_properly/_create_session/creates_sessions_with_a_location_hint.yml +39 -0
  84. data/spec/matchers/token.rb +48 -0
  85. data/spec/opentok/archives_spec.rb +91 -0
  86. data/spec/opentok/opentok_spec.rb +144 -0
  87. data/spec/opentok/session_spec.rb +71 -0
  88. data/spec/shared/opentok_generates_tokens.rb +62 -0
  89. data/spec/shared/session_generates_tokens.rb +63 -0
  90. data/spec/spec_helper.rb +6 -7
  91. metadata +197 -59
  92. data/.rspec +0 -3
  93. data/CHANGES +0 -33
  94. data/doc/reference.md +0 -122
  95. data/lib/open_tok/archive.rb +0 -53
  96. data/lib/open_tok/archive_timeline_event.rb +0 -22
  97. data/lib/open_tok/archive_video_resource.rb +0 -28
  98. data/lib/open_tok/exception.rb +0 -50
  99. data/lib/open_tok/open_tok_sdk.rb +0 -198
  100. data/lib/open_tok/request.rb +0 -63
  101. data/lib/open_tok/role_constants.rb +0 -18
  102. data/lib/open_tok/session.rb +0 -25
  103. data/lib/open_tok/session_property_constants.rb +0 -30
  104. data/lib/open_tok/utils.rb +0 -10
  105. data/lib/open_tok/version.rb +0 -5
  106. data/sample/sample.rb +0 -26
  107. data/spec/cassettes/archives.yml +0 -83
  108. data/spec/cassettes/deleteArchive.yml +0 -91
  109. data/spec/cassettes/invalidSession.yml +0 -41
  110. data/spec/cassettes/session.yml +0 -46
  111. data/spec/cassettes/stitchArchive.yml +0 -42
  112. data/spec/opentok_exception_spec.rb +0 -38
  113. data/spec/opentok_spec.rb +0 -135
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0122202a607892b2550a526dc44c35b2beea87c8
4
- data.tar.gz: b005eb0fba4ee0bdcec3123c87042936ff70673e
3
+ metadata.gz: 31559c8863e6d4d9fc421175f04ac721510500f7
4
+ data.tar.gz: 7c587bd56bec73b00a1b36250f42c3aefd2bc9a8
5
5
  SHA512:
6
- metadata.gz: 7a15810ae54376c9442277c4cfd33ca3532378b5b0093a961cc6781734adf747f90771286fece4e428ecbcf143453152211f775ae1b99ef147031a7a4f5bec75
7
- data.tar.gz: e85e3a3832c6984c7ec975e6acba8ff45669e8287f009fea12d7ec1ff77f6f0bc77c99f8bb12cbf4edd0438ebb985ebbb17629003028a02e44de1f39008150bf
6
+ metadata.gz: 18227e422d95dfa809324e6ebcd688768ac8fdfec9444039099ac853365492fdf4f362929508030ec7f6cb73d9e998fcd8cdc10836290edd7f5ce9e2ed74bed6
7
+ data.tar.gz: 3d1acb0a2cc1a03cfd8b1bf318c20c5dcca44e363df23cfe3882c2c52d2dfa662886b383c09b35b4fd1022ed99f37c4239751fe418d96e86e0a44751817ff866
data/.gitignore CHANGED
@@ -1,5 +1,19 @@
1
1
  *.gem
2
+ *.rbc
2
3
  .bundle
4
+ .config
5
+ .yardoc
3
6
  Gemfile.lock
4
- pkg/*
5
- .DS_Store
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+
19
+ .DS_Store
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.3"
4
+ - "2.0.0"
5
+ - "2.1.0"
6
+ - rbx-2
@@ -0,0 +1 @@
1
+ 'lib/**/*.rb' --no-private --readme doc/README.md
@@ -0,0 +1,47 @@
1
+ # Contributing Guidelines
2
+
3
+ For anyone looking to get involved to this project, we are glad to hear from you. Here are a few types of contributions
4
+ that we would be interested in hearing about.
5
+
6
+ * Bug fixes
7
+ - If you find a bug, please first report it using Github Issues.
8
+ - Issues that have already been identified as a bug will be labelled `bug`.
9
+ - If you'd like to submit a fix for a bug, send a Pull Request from your own fork and mention the Issue number.
10
+ + Include a test that isolates the bug and verifies that it was fixed.
11
+ * New Features
12
+ - If you'd like to accomplish something in the library that it doesn't already do, describe the problem in a new
13
+ Github Issue.
14
+ - Issues that have been identified as a feature request will be labelled `enhancement`.
15
+ - If you'd like to implement the new feature, please wait for feedback from the project maintainers before spending
16
+ too much time writing the code. In some cases, `enhancement`s may not align well with the project objectives at
17
+ the time.
18
+ * Tests, Documentation, Miscellaneous
19
+ - If you think the test coverage could be improved, the documentation could be clearer, you've got an alternative
20
+ implementation of something that may have more advantages, or any other change we would still be glad hear about
21
+ it.
22
+ - If its a trivial change, go ahead and send a Pull Request with the changes you have in mind
23
+ - If not, open a Github Issue to discuss the idea first.
24
+
25
+ ## Requirements
26
+
27
+ For a contribution to be accepted:
28
+
29
+ * The test suite must be complete and pass
30
+ * Code must follow existing styling conventions
31
+ * Commit messages must be descriptive. Related issues should be mentioned by number.
32
+
33
+ If the contribution doesn't meet these criteria, a maintainer will discuss it with you on the Issue. You can still
34
+ continue to add more commits to the branch you have sent the Pull Request from.
35
+
36
+ ## How To
37
+
38
+ 1. Fork this repository on GitHub.
39
+ 1. Clone/fetch your fork to your local development machine.
40
+ 1. Create a new branch (e.g. `issue-12`, `feat.add_foo`, etc) and check it out.
41
+ 1. Make your changes and commit them. (Did the tests pass?)
42
+ 1. Push your new branch to your fork. (e.g. `git push myname issue-12`)
43
+ 1. Open a Pull Request from your new branch to the original fork's `master` branch.
44
+
45
+ ## Developer Guidelines
46
+
47
+ See DEVELOPING.md for guidelines for developing this project.
@@ -0,0 +1,91 @@
1
+ # Development Guidelines
2
+
3
+ This document describes tools, tasks and workflow that one needs to be familiar with in order to effectively maintain
4
+ this project. If you use this package within your own software as is but don't plan on modifying it, this guide is
5
+ **not** for you.
6
+
7
+ ## Tools
8
+
9
+ * [Bundler](http://bundler.io): used to ensure gems that are used as dependencies are uniform with other contributors
10
+ and maintainers. The first thing you should do once you've cloned this repository is to run `bundle install`. This
11
+ will also generate the `Gemfile.lock` file, which caches the configuration of gems you are using. Bundler is
12
+ included with all recent versions of Ruby.
13
+
14
+ * [Rake](http://rake.rubyforge.org/): used to run predefined tasks. Rake is usually run by prefixing `bundle exec` to
15
+ ensure that dependencies used for the task are provided through bundler. Example: `$ bundle exec rake spec`. Rake
16
+ is installed by Bundler when `bundler install` is run.
17
+
18
+ ## Tasks
19
+
20
+ ### Building
21
+
22
+ Building is required to generate the gem. A gem is a distributable artifact suitable for installing on other systems.
23
+
24
+ * `rake build` - builds the gem into the `pkg` directory.
25
+
26
+ ### Testing
27
+
28
+ This project's tests are written using [RSpec](http://rspec.info/). It also uses the VCR and WebMock helpers.
29
+
30
+ * `rake spec` - run the test suite.
31
+
32
+ ### Generating Documentation
33
+
34
+ This project's reference documentation is generated by Yard and resides in the `docs` directory of the project.
35
+ Common tasks:
36
+
37
+ * `rake yard` - generate the reference documentation.
38
+
39
+ ### Releasing
40
+
41
+ In order to create a release, the following should be completed in order.
42
+
43
+ 1. Ensure all tests are passing (`rake spec`) and that there is enough test coverage.
44
+ 1. Make sure you are on the `master` branch of the repository, with all changes merged/committed already.
45
+ 1. Update the version number in the source code (`lib/opentok/version.rb`) and the README. See [Versioning](#versioning) for
46
+ information about selecting an appropriate version number.
47
+ 1. Commit the version number change with the message ("Update to version v.x.x.x"), substituting the new version number.
48
+ 1. Ensure you have permission to update the `opentok` gem on Rubygems: <https://rubygems.org/gems/opentok>.
49
+ 1. Run `rake release`, which will create a git tag for the version number, build, and push the gem to Rubygems.
50
+ 1. Change the version number for future development by adding ".alpha.1", then make another commit with the message
51
+ "Beginning development on next version".
52
+ 1. Push the changes to the main repository (`git push origin master`).
53
+
54
+ ## Workflow
55
+
56
+ ### Versioning
57
+
58
+ The project uses [semantic versioning](http://semver.org/) as a policy for incrementing version numbers. For planned
59
+ work that will go into a future version, there should be a Milestone created in the Github Issues named with the version
60
+ number (e.g. "v2.2.1").
61
+
62
+ During development the version number should end in ".alpha.1" or ".beta.x", where x is an increasing number starting
63
+ from 1.
64
+
65
+ ### Branches
66
+
67
+ * `master` - the main development branch.
68
+ * `feat.foo` - feature branches. these are used for longer running tasks that cannot be accomplished in one commit.
69
+ once merged into master, these branches should be deleted.
70
+ * `vx.x.x` - if development for a future version/milestone has begun while master is working towards a sooner
71
+ release, this is the naming scheme for that branch. once merged into master, these branches should be deleted.
72
+
73
+ ### Tags
74
+
75
+ * `vx.x.x` - commits are tagged with a final version number during release.
76
+
77
+ ### Issues
78
+
79
+ Issues are labelled to help track their progress within the pipeline.
80
+
81
+ * no label - these issues have not been triaged.
82
+ * `bug` - confirmed bug. aim to have a test case that reproduces the defect.
83
+ * `enhancement` - contains details/discussion of a new feature. it may not yet be approved or placed into a
84
+ release/milestone.
85
+ * `wontfix` - closed issues that were never addressed.
86
+ * `duplicate` - closed issue that is the same to another referenced issue.
87
+ * `question` - purely for discussion
88
+
89
+ ### Management
90
+
91
+ When in doubt, find the maintainers and ask.
data/LICENSE CHANGED
@@ -1,7 +1,21 @@
1
- Copyright (c) 2012 TokBox, Inc.
1
+ The MIT License (MIT)
2
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
3
+ Copyright (c) 2014 TokBox, Inc.
4
4
 
5
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
- The software complies with Terms of Service for the OpenTok platform described in http://www.tokbox.com/termsofservice
7
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md CHANGED
@@ -1,81 +1,198 @@
1
- # OpenTok Server SDK for Ruby
1
+ # OpenTok Ruby SDK
2
2
 
3
- The OpenTok server SDK for Ruby lets you generate [sessions](http://tokbox.com/opentok/tutorials/create-session/) and
4
- [tokens](http://tokbox.com/opentok/tutorials/create-token/) for [OpenTok](http://www.tokbox.com/) applications.
3
+ [![Build Status](https://travis-ci.org/opentok/Opentok-Ruby-SDK.png?branch=modernization)](https://travis-ci.org/opentok/Opentok-Ruby-SDK)
5
4
 
5
+ The OpenTok Ruby SDK lets you generate
6
+ [sessions](http://www.tokbox.com/opentok/tutorials/create-session/) and
7
+ [tokens](http://www.tokbox.com/opentok/tutorials/create-token/) for
8
+ [OpenTok](http://www.tokbox.com/) applications, and
9
+ [archive](http://www.tokbox.com/platform/archiving) OpenTok 2.0 sessions.
6
10
 
7
- ## Installation
11
+ If you are updating from a previous version of this SDK, see
12
+ [Important changes in v2.2](#important-changes-in-v22).
8
13
 
9
- To install using bundler, add Opentok to your `gemfile` and run `bundle install`:
10
- <pre>
11
- gem 'opentok'
12
- </pre>
14
+ # Installation
13
15
 
14
- To install as a regular gem just type `gem install opentok`
16
+ ## Bundler (recommended):
15
17
 
18
+ Bundler helps manage dependencies for Ruby projects. Find more info here: <http://bundler.io>
16
19
 
17
- ## Requirements
20
+ Add this gem to your `Gemfile`:
18
21
 
19
- The OpenTok server SDK for Ruby requires Ruby 1.9 or greater.
22
+ ```ruby
23
+ gem "opentok", "~> 2.2.x"
24
+ ```
20
25
 
21
- You need an OpenTok API key and API secret, which you can obtain at <https://dashboard.tokbox.com>.
26
+ Allow bundler to install the change.
27
+
28
+ ```
29
+ $ bundle install
30
+ ```
31
+
32
+ ## RubyGems:
33
+
34
+ ```
35
+ $ gem install opentok -v 2.2.0
36
+ ```
37
+
38
+ # Usage
22
39
 
23
- # OpenTokSDK
40
+ ## Initializing
24
41
 
25
- In order to use any of the server side functions, you must first create an `OpenTokSDK` object with your developer credentials.
26
- `OpenTokSDK` takes two parameters:
42
+ Load the gem at the top of any file where it will be used. Then initialize an `OpenTok::OpenTok`
43
+ object with your OpenTok API key and API secret.
27
44
 
28
- * key (string) - Given to you when you register
29
- * secret (string) - Given to you when you register
45
+ ```ruby
46
+ require "opentok"
30
47
 
31
- <pre>
32
- # Creating an OpenTok Object
33
- API_KEY = '' # replace with your OpenTok API key
34
- API_SECRET = '' # replace with your OpenTok API secret
35
- OTSDK = OpenTok::OpenTokSDK.new API_KEY, API_SECRET
36
- </pre>
48
+ opentok = OpenTok::OpenTok.new api_key, api_secret
49
+ ```
37
50
 
38
51
  ## Creating Sessions
39
- Call the `createSession()` method of the `OpenTokSDK` object to create a session. The method returns a Session object.
40
- The `sessionId` property of the Session object is the OpenTok session ID:
41
- <pre>
42
- # creating an OpenTok server-enabled session
43
- sessionId = OTSDK.createSession().to_s
44
52
 
45
- # Creating peer-to-peer session
46
- sessionProperties = {OpenTok::SessionPropertyConstants::P2P_PREFERENCE => "enabled"}
47
- sessionId = OTSDK.createSession( nil, sessionProperties ).to_s
48
- </pre>
53
+ To create an OpenTok Session, use the `OpenTok.create_session(properties)` method. The
54
+ `properties` parameter is an optional Hash used to specify whether you are creating a p2p Session
55
+ and specifying a location hint. The `session_id` method of the returned `OpenTok::Session`
56
+ instance is useful to get a sessionId that can be saved to a persistent store (e.g. database).
57
+
58
+ ```ruby
59
+ # Just a plain Session:
60
+ session = opentok.create_session
61
+
62
+ # The session will attempt to transmit streams directly between clients.
63
+ # If clients cannot connect, the session uses the OpenTok TURN server:
64
+ session = opentok.create_session :media_mode => :relayed
65
+
66
+ # A Session with a location hint:
67
+ session = opentok.create_session :location => '12.34.56.78'
68
+
69
+ # Store this sessionId in the database for later use:
70
+ session_id = session.session_id
71
+ ```
49
72
 
50
73
  ## Generating Tokens
51
- With the generated session ID, you can generate tokens for each user:
52
74
 
53
- <pre>
54
- # Generating a publisher token
55
- token = OTSDK.generateToken :session_id => sessionId
56
-
57
- # Generating a token with moderator role and connection data
58
- role = OpenTok::RoleConstants::MODERATOR
59
- connection_data = "username=Bob,level=4"
60
- token = OTSDK.generateToken :session_id => sessionId, :role => role, :connection_data => connection_data
61
- </pre>
75
+ Once a Session is created, you can start generating Tokens for clients to use when connecting to it.
76
+ You can generate a token either by calling the `opentok.generate_token(session_id, options)` method,
77
+ or by calling the `session.generate_token(options)` method on the an instance after creating it. The
78
+ `options` parameter is an optional Hash used to set the role, expire time, and connection data of
79
+ the Token.
80
+
81
+ ```ruby
82
+ # Generate a Token from just a session_id (fetched from a database)
83
+ token = opentok.generate_token session_id
84
+
85
+ # Generate a Token by calling the method on the Session (returned from createSession)
86
+ token = session.generate_token
87
+
88
+ # Set some options in a token
89
+ token = session.generate_token({
90
+ :role => :moderator
91
+ :expire_time => Time.now.to_i+(7 * 24 * 60 * 60) # in one week
92
+ :data => 'name=Johnny'
93
+ });
94
+ ```
95
+
96
+ ## Working with Archives
97
+
98
+ You can start the recording of an OpenTok Session using the `opentok.archives.create(session_id,
99
+ options)` method. This will return an `OpenTok::Archive` instance. The parameter `options` is an
100
+ optional Hash used to assign a name for the Archive. Note that you can only start an
101
+ Archive on a Session that has clients connected.
102
+
103
+ ```ruby
104
+ archive = opentok.archives.create session_id :name => "Important Presentation"
105
+
106
+ # Store this archive_id in the database for later use
107
+ archive_id = archive.id
108
+ ```
109
+
110
+ You can stop the recording of a started Archive using the `opentok.archives.stop_by_id(archive_id)`
111
+ method. You can also do this using the `archive.stop` method of the `OpenTok::Archive` instance.
112
+
113
+ ```ruby
114
+ # Stop an Archive from an archive_id (fetched from database)
115
+ opentok.archives.stop_by_id archive_id
116
+ # Stop an Archive from an instance (returned from opentok.archives.create)
117
+ archive.stop
118
+ ```
119
+
120
+ To get an `OpenTok::Archive` instance (and all the information about it) from an `archive_id`, use
121
+ the `opentok.archives.find(archive_id)` method.
122
+
123
+ ```ruby
124
+ archive = opentok.archives.find archive_id
125
+ ```
126
+
127
+ To delete an Archive, you can call the `opentok.archives.delete_by_id(archive_id)` method or the
128
+ `delete` method of an `OpenTok::Archive` instance.
129
+
130
+ ```ruby
131
+ # Delete an Archive from an archive_id (fetched from database)
132
+ opentok.archives.delete_by_id archive_id
133
+ # Delete an Archive from an Archive instance (returned from archives.create, archives.find)
134
+ archive.delete
135
+ ```
136
+
137
+ You can also get a list of all the Archives you've created (up to 1000) with your API Key. This is
138
+ done using the `opentok.archives.all(options)` method. The parameter `options` is an optional Hash
139
+ used to specify an `:offset` and `:count` to help you paginate through the results. This will return
140
+ an instance of the `OpenTok::ArchiveList` class.
141
+
142
+ ```ruby
143
+ archive_list = opentok.archives.all
144
+
145
+ # Get an specific Archive from the list
146
+ archive_list[i]
147
+ # Get the total number of Archives for this API Key
148
+ $total = archive_list.total
149
+ ```
150
+
151
+ # Samples
152
+
153
+ There are two sample applications included in this repository. To get going as fast as possible, clone the whole
154
+ repository and follow the Walkthroughs:
155
+
156
+ * [HelloWorld](sample/HelloWorld/README.md)
157
+ * [Archiving](sample/Archiving/README.md)
158
+
159
+ # Documentation
160
+
161
+ Reference documentation is available at <http://www.tokbox.com//opentok/libraries/server/ruby/reference/index.html> and in the
162
+ doc directory of the SDK.
163
+
164
+ # Requirements
165
+
166
+ You need an OpenTok API key and API secret, which you can obtain at <https://dashboard.tokbox.com>.
167
+
168
+ The OpenTok Ruby SDK requires Ruby 1.9.3 or greater.
169
+
170
+ # Release Notes
171
+
172
+ See the [Releases](https://github.com/opentok/opentok-ruby-sdk/releases) page for details
173
+ about each release.
174
+
175
+ ## Important changes in v2.2
62
176
 
63
- Possible Errors:
177
+ This version of the SDK includes support for working with OpenTok 2.0 archives. (This API does not
178
+ work with OpenTok 1.0 archives.)
64
179
 
65
- * "Null or empty session ID are not valid"
66
- * "An invalid session ID was passed"
180
+ Note also that the `options` parameter of the `OpenTok.create_session()` method has a `media_mode`
181
+ property instead of a `p2p` property.
67
182
 
68
- # Contributing
69
- To contribute, simple fork this repository and send a pull request when you are done.
70
- Before you send pull requests, make sure all test cases are passing.
183
+ See the reference documentation
184
+ <http://www.tokbox.com/opentok/libraries/server/ruby/reference/index.html> and in the
185
+ docs directory of the SDK.
71
186
 
72
- To install necessary gems, type `bundle install` in the root directory.
73
187
 
74
- To run test cases, type `rspec spec/` in the root directory.
188
+ # Development and Contributing
75
189
 
190
+ Interested in contributing? We :heart: pull requests! See the [Development](DEVELOPING.md) and
191
+ [Contribution](CONTRIBUTING.md) guidelines.
76
192
 
77
- # More information
193
+ # Support
78
194
 
79
- See the [reference documentation](doc/reference.md).
195
+ See <http://tokbox.com/opentok/support/> for all our support options.
80
196
 
81
- For more information on OpenTok, go to <http://www.tokbox.com/>.
197
+ Find a bug? File it on the [Issues](https://github.com/opentok/opentok-ruby-sdk/issues) page. Hint:
198
+ test cases are really helpful!