kappa 1.0.1 → 1.0.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a98881c4a1aa81f1fb6f8e1bfef8e09e40d61dd5
4
+ data.tar.gz: 6c954ecfd80afe361a81ab1a87790956d8e288c3
5
+ SHA512:
6
+ metadata.gz: e09a3f13dc90aa0865e2cb47d2aa18a1d930e060b6c9e5abe50571ef67351eb068f7e19e1b62871409e8a3f231c1803a7a29eebf8ddf30498848cbdc00d36fcf
7
+ data.tar.gz: 41d3e631e4faf35cb3ac1d8626f5830fb9c8015858a9b1f46789c9f4dd967cf08fbb96899137e96d376ce31b52e827625608e5a66ce6ac9c52cdd5397b2ee4dd
data/.yardopts CHANGED
@@ -1,6 +1,6 @@
1
- --no-private
2
- --embed-mixins
3
- --markup markdown
4
- -
5
- README.md
6
- LICENSE
1
+ --no-private
2
+ --embed-mixins
3
+ --markup markdown
4
+ -
5
+ README.md
6
+ LICENSE
data/LICENSE CHANGED
@@ -1,19 +1,19 @@
1
- Copyright (c) 2013 Chris Schmich
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
1
+ Copyright (c) 2013 Chris Schmich
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/README.md CHANGED
@@ -1,285 +1,285 @@
1
- # <img src="https://raw.github.com/schmich/kappa/master/assets/kappa.png" /> Kappa
2
-
3
- Kappa is the Ruby library for interfacing with the [Twitch.tv API](https://github.com/justintv/Twitch-API).
4
-
5
- [![Gem Version](https://badge.fury.io/rb/kappa.png)](http://rubygems.org/gems/kappa)
6
- [![Build Status](https://secure.travis-ci.org/schmich/kappa.png)](http://travis-ci.org/schmich/kappa)
7
- [![Dependency Status](https://gemnasium.com/schmich/kappa.png)](https://gemnasium.com/schmich/kappa)
8
- [![Coverage Status](https://coveralls.io/repos/schmich/kappa/badge.png?branch=master)](https://coveralls.io/r/schmich/kappa?branch=master)
9
- [![Code Climate](https://codeclimate.com/github/schmich/kappa.png)](https://codeclimate.com/github/schmich/kappa)
10
-
11
- ## Getting Started
12
-
13
- ```bash
14
- gem install kappa
15
- ```
16
-
17
- ```ruby
18
- require 'kappa'
19
-
20
- frag = Twitch.channels.get('lethalfrag')
21
- puts frag.streaming?
22
- ```
23
-
24
- ```ruby
25
- gem 'kappa', '~> 1.0'
26
- ```
27
-
28
- ## Configuration
29
-
30
- When making requests to Twitch, you must specify a client ID for your application.
31
- If you do not specify a client ID, Twitch reserves the right to rate-limit your application
32
- without warning.
33
-
34
- Your client ID can be specified through configuration, for example:
35
-
36
- ```ruby
37
- Twitch.configure do |config|
38
- config.client_id = 'sc2daily-v1.0.0'
39
- end
40
- ```
41
-
42
- See the [`Twitch.configure`](http://rdoc.info/gems/kappa/Twitch#configure-class_method) documentation.
43
-
44
- ## Examples
45
-
46
- Get the featured streams on the Twitch.tv homepage:
47
-
48
- ```ruby
49
- Twitch.streams.featured do |stream|
50
- channel = stream.channel
51
- puts "#{channel.display_name}: #{stream.viewer_count} viewers"
52
- puts "#{channel.status}"
53
- puts '-' * 80
54
- end
55
- ```
56
-
57
- See if certain users are streaming:
58
-
59
- ```ruby
60
- users = ['destiny', 'followgrubby', 'incontroltv']
61
- Twitch.streams.find(:channel => users) do |stream|
62
- puts "#{stream.channel.name} is streaming #{stream.game_name}."
63
- end
64
- ```
65
-
66
- Get the most popular games being streamed:
67
-
68
- ```ruby
69
- Twitch.games.top(:limit => 3) do |game|
70
- print "#{game.name}: "
71
- print "#{game.viewer_count} viewers in "
72
- puts "#{game.channel_count} channels"
73
- end
74
- ```
75
-
76
- Get streams for a particular game:
77
-
78
- ```ruby
79
- Twitch.streams.find(:game => 'League of Legends') do |stream|
80
- next if stream.viewer_count < 1000
81
- puts "#{stream.channel.display_name}: #{stream.viewer_count}"
82
- end
83
- ```
84
-
85
- Get info for a single user:
86
-
87
- ```ruby
88
- user = Twitch.users.get('lethalfrag')
89
- stream = user.stream
90
-
91
- puts user.display_name
92
- if stream
93
- puts "Streaming #{stream.game_name} at #{stream.url}"
94
- else
95
- puts 'Not streaming.'
96
- end
97
- ```
98
-
99
- Get the followers of a channel:
100
-
101
- ```ruby
102
- channel = Twitch.channels.get('day9tv')
103
- channel.followers do |user|
104
- puts user.display_name
105
- end
106
- ```
107
-
108
- ## Resources
109
-
110
- ### <a id="channels"></a>Channels
111
-
112
- Channels serve as the home location for a [user's](#users) content. Channels have a [stream](#streams),
113
- can run commercials, store [videos](#videos), display information and status, and have a customized page
114
- including banners and backgrounds. See the [`Channel`](http://rdoc.info/gems/kappa/Twitch/V2/Channel) documentation.
115
-
116
- ```ruby
117
- c = Twitch.channels.get('destiny')
118
- c.nil? # => false (channel exists)
119
- c.stream # => #<Kappa::V2::Stream> (current live stream)
120
- c.url # => "http://www.twitch.tv/destiny"
121
- c.status # => "Destiny - Diamond I ADC - Number 1 Draven player..."
122
- c.teams # => [#<Kappa::V2::Team>]
123
- c.videos # => [#<Kappa::V2::Video>, ...]
124
- c.followers # => [#<Kappa::V2::User>, ...]
125
- ```
126
-
127
- ### <a id="streams"></a>Streams
128
-
129
- Streams are video broadcasts that are currently live. They belong to a [user](#users) and are part of a
130
- [channel](#channels). See the [`Stream`](http://rdoc.info/gems/kappa/Twitch/V2/Stream) and
131
- [`Streams`](http://rdoc.info/gems/kappa/Twitch/V2/Streams) documentation.
132
-
133
- ```ruby
134
- s = Twitch.streams.get('idrajit')
135
- s.nil? # => false (currently live)
136
- s.game_name # => "StarCraft II: Heart of the Swarm"
137
- s.viewer_count # => 7267
138
- s.channel.url # => "http://www.twitch.tv/idrajit"
139
- ```
140
-
141
- ### <a id="users"></a>Users
142
-
143
- These are members of the Twitch community who have a Twitch account. If broadcasting, they can own a
144
- [stream](#streams) that they can broadcast on their [channel](#channels). If mainly viewing, they might
145
- follow or subscribe to channels. See the [`User`](http://rdoc.info/gems/kappa/Twitch/V2/User) documentation.
146
-
147
- ```ruby
148
- u = Twitch.users.get('snoopeh')
149
- u.nil? # => false (user exists)
150
- u.channel # => #<Kappa::V2::Channel>
151
- u.following.map(&:name) # => ["national_esl1", "dreamhacklol", "riotgames"]
152
- ```
153
-
154
- ### <a id="videos"></a>Videos
155
-
156
- Videos are broadcasts or highlights owned by a [channel](#channels). Broadcasts are unedited videos that are saved
157
- after a streaming session. Highlights are videos edited from broadcasts by the channel's owner. See the
158
- [`Video`](http://rdoc.info/gems/kappa/Twitch/V2/Video) and [`Videos`](http://rdoc.info/gems/kappa/Twitch/V2/Videos)
159
- documentation.
160
-
161
- ```ruby
162
- v = Twitch.videos.get('a395995729')
163
- v.nil? # => false (video exists)
164
- v.title # => "DreamHack Open Stockholm 26-27 April"
165
- v.game_name # => "StarCraft II: Heart of the Swarm"
166
- v.recorded_at # => 2013-04-26 18:33:48 UTC
167
- v.view_count # => 12506
168
- ```
169
-
170
- ### <a id="teams"></a>Teams
171
-
172
- Teams are an organization of [channels](#channels). See the [`Team`](http://rdoc.info/gems/kappa/Twitch/V2/Team)
173
- documentation.
174
-
175
- ```ruby
176
- t = Twitch.teams.get('teamliquid')
177
- t.nil? # => false (team exists)
178
- t.display_name # => "TeamLiquid"
179
- t.info # => "TeamLiquid is awesome. and esports. video games. \n\n"
180
- t.updated_at # => 2013-05-24 00:17:10 UTC
181
- ```
182
-
183
- ### <a id="games"></a>Games
184
-
185
- Games are categories (e.g. League of Legends, Diablo 3) used by [streams](#streams) and [channels](#channels).
186
- Games can be searched for by query. See the [`Game`](http://rdoc.info/gems/kappa/Twitch/V2/Game),
187
- [`Games`](http://rdoc.info/gems/kappa/Twitch/V2/Games), and
188
- [`GameSuggestion`](http://rdoc.info/gems/kappa/Twitch/V2/GameSuggestion) documentation.
189
-
190
- ```ruby
191
- top = Twitch.games.top(:limit => 2)
192
- top.map(&:name) # => ["League of Legends", "StarCraft II: Heart of the Swarm"]
193
- ```
194
-
195
- ```ruby
196
- g = Twitch.games.top(:limit => 1).first
197
- g.name # => "League of Legends"
198
- g.channel_count # => 906
199
- g.viewer_count # => 79223
200
- g.box_images.medium_url # =>"http://static-cdn.jtvnw.net/ttv-boxart/31412.jpg"
201
- ```
202
-
203
- ```ruby
204
- s = Twitch.games.find(:name => 'diablo', :live => true)
205
- s.map(&:name) # => ["Diablo III", "Diablo II", "Diablo"]
206
- s.map(&:popularity) # => [120, 4, 1]
207
- ```
208
-
209
- ## Errors
210
-
211
- All errors derive from `Twitch::Error`.
212
-
213
- - `Twitch:Error` - Base class for all errors.
214
- - `Twitch::Error::ResponseError` - Base class for all Twitch.tv API response errors.
215
- - `Twitch::Error::FormatError` - The returned data was incorrectly formatted (e.g. invalid JSON).
216
- - `Twitch::Error::ClientError` - The server returned a 4xx status code.
217
- - `Twitch::Error::ServerError` - The server returned a 5xx status code.
218
-
219
- All `ResponseError` errors have additional diagnostic information:
220
-
221
- ```ruby
222
- e.status # => 422
223
- e.body # => '{"status":422,"message":"...","error":"..."}'
224
- e.url # => "https://api.twitch.tv/streams/desrow"
225
- ```
226
-
227
- See the [`ResponseError`](http://rdoc.info/gems/kappa/Twitch/Error/ResponseError) documentation.
228
-
229
- ## Documentation
230
-
231
- - Current release: [http://rdoc.info/gems/kappa/frames](http://rdoc.info/gems/kappa/frames)
232
- - Latest master: [http://rdoc.info/github/schmich/kappa/frames](http://rdoc.info/github/schmich/kappa/frames)
233
- - Twitch REST API: [https://github.com/justintv/Twitch-API](https://github.com/justintv/Twitch-API)
234
-
235
- ## Versioning
236
-
237
- ### Library version
238
-
239
- Kappa adheres to the [Semantic Versioning 2.0.0](http://semver.org/) specification. Most importantly, any
240
- compatibility- or API-breaking changes will result in a new major version (e.g. `1.x.x` to `2.x.x`). Because
241
- of this, you should use a [pessimistic version constraint](http://docs.rubygems.org/read/chapter/16#page74) when
242
- taking a dependency on this library. For example:
243
-
244
- ```ruby
245
- gem 'kappa', '~> 1.0'
246
- ```
247
-
248
- Any new backwards-compatible features will result in a new minor version (e.g. `x.1.x` to `x.2.x`) while any
249
- backwards-compatible bugfixes will result in a new patch version (e.g. `x.x.1` to `x.x.2`).
250
-
251
- ### Twitch API versions
252
-
253
- Twitch supports multiple versions of their API simultaneously, with each version potentially providing different data
254
- and behaving differently. Because of this, you can specify which version of the Twitch API you wish to use.
255
- This is done through Kappa configuration.
256
-
257
- For example, if you want to use the V2 Twitch API:
258
-
259
- ```ruby
260
- Twitch.configure do |config|
261
- config.client_id = 'sc2daily-v1.0.0'
262
- config.api = Twitch::V2
263
- end
264
- ```
265
-
266
- `Twitch::V2` is the default and is currently the only supported API version.
267
-
268
- ## Contributing
269
-
270
- - [Fork and clone the repo.](http://help.github.com/fork-a-repo/)
271
- - [Create a branch for your changes.](http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging)
272
- - Run `bundle install` to install development requirements.
273
- - Implement your feature or bug fix.
274
- - Add specs under the `spec` folder to prevent regressions or to test new code.
275
- - Add [YARD](http://rubydoc.info/docs/yard/file/docs/GettingStarted.md) documentation for new features. Run `rake yard` to view documentation.
276
- - Run `rake coverage` to run specs with code coverage. All specs must pass; coverage must remain at 100%. Run `rake coverage:view` to see a detailed report.
277
- - Commit and push your changes.
278
- - [Submit a pull request.](http://help.github.com/send-pull-requests/)
279
-
280
- ## License
281
-
282
- Copyright &copy; 2013 Chris Schmich
283
- <br />
284
- MIT License, See [LICENSE](LICENSE) for details.
285
- [![githalytics.com alpha](https://cruel-carlota.pagodabox.com/b885add21cf8f2b473d1394edc1cf5b4 "githalytics.com")](http://githalytics.com/schmich/kappa)
1
+ # <img src="https://raw.github.com/schmich/kappa/master/assets/kappa.png" /> Kappa
2
+
3
+ Kappa is the Ruby library for interfacing with the [Twitch.tv API](https://github.com/justintv/Twitch-API).
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/kappa.png)](http://rubygems.org/gems/kappa)
6
+ [![Build Status](https://secure.travis-ci.org/schmich/kappa.png)](http://travis-ci.org/schmich/kappa)
7
+ [![Dependency Status](https://gemnasium.com/schmich/kappa.png)](https://gemnasium.com/schmich/kappa)
8
+ [![Coverage Status](https://coveralls.io/repos/schmich/kappa/badge.png?branch=master)](https://coveralls.io/r/schmich/kappa?branch=master)
9
+ [![Code Climate](https://codeclimate.com/github/schmich/kappa.png)](https://codeclimate.com/github/schmich/kappa)
10
+
11
+ ## Getting Started
12
+
13
+ ```bash
14
+ gem install kappa
15
+ ```
16
+
17
+ ```ruby
18
+ require 'kappa'
19
+
20
+ frag = Twitch.channels.get('lethalfrag')
21
+ puts frag.streaming?
22
+ ```
23
+
24
+ ```ruby
25
+ gem 'kappa', '~> 1.0'
26
+ ```
27
+
28
+ ## Configuration
29
+
30
+ When making requests to Twitch, you must specify a client ID for your application.
31
+ If you do not specify a client ID, Twitch reserves the right to rate-limit your application
32
+ without warning.
33
+
34
+ Your client ID can be specified through configuration, for example:
35
+
36
+ ```ruby
37
+ Twitch.configure do |config|
38
+ config.client_id = 'sc2daily-v1.0.0'
39
+ end
40
+ ```
41
+
42
+ See the [`Twitch.configure`](http://rdoc.info/gems/kappa/Twitch#configure-class_method) documentation.
43
+
44
+ ## Examples
45
+
46
+ Get the featured streams on the Twitch.tv homepage:
47
+
48
+ ```ruby
49
+ Twitch.streams.featured do |stream|
50
+ channel = stream.channel
51
+ puts "#{channel.display_name}: #{stream.viewer_count} viewers"
52
+ puts "#{channel.status}"
53
+ puts '-' * 80
54
+ end
55
+ ```
56
+
57
+ See if certain users are streaming:
58
+
59
+ ```ruby
60
+ users = ['destiny', 'followgrubby', 'incontroltv']
61
+ Twitch.streams.find(:channel => users) do |stream|
62
+ puts "#{stream.channel.name} is streaming #{stream.game_name}."
63
+ end
64
+ ```
65
+
66
+ Get the most popular games being streamed:
67
+
68
+ ```ruby
69
+ Twitch.games.top(:limit => 3) do |game|
70
+ print "#{game.name}: "
71
+ print "#{game.viewer_count} viewers in "
72
+ puts "#{game.channel_count} channels"
73
+ end
74
+ ```
75
+
76
+ Get streams for a particular game:
77
+
78
+ ```ruby
79
+ Twitch.streams.find(:game => 'League of Legends') do |stream|
80
+ next if stream.viewer_count < 1000
81
+ puts "#{stream.channel.display_name}: #{stream.viewer_count}"
82
+ end
83
+ ```
84
+
85
+ Get info for a single user:
86
+
87
+ ```ruby
88
+ user = Twitch.users.get('lethalfrag')
89
+ stream = user.stream
90
+
91
+ puts user.display_name
92
+ if stream
93
+ puts "Streaming #{stream.game_name} at #{stream.url}"
94
+ else
95
+ puts 'Not streaming.'
96
+ end
97
+ ```
98
+
99
+ Get the followers of a channel:
100
+
101
+ ```ruby
102
+ channel = Twitch.channels.get('day9tv')
103
+ channel.followers do |user|
104
+ puts user.display_name
105
+ end
106
+ ```
107
+
108
+ ## Resources
109
+
110
+ ### <a id="channels"></a>Channels
111
+
112
+ Channels serve as the home location for a [user's](#users) content. Channels have a [stream](#streams),
113
+ can run commercials, store [videos](#videos), display information and status, and have a customized page
114
+ including banners and backgrounds. See the [`Channel`](http://rdoc.info/gems/kappa/Twitch/V2/Channel) documentation.
115
+
116
+ ```ruby
117
+ c = Twitch.channels.get('destiny')
118
+ c.nil? # => false (channel exists)
119
+ c.stream # => #<Kappa::V2::Stream> (current live stream)
120
+ c.url # => "http://www.twitch.tv/destiny"
121
+ c.status # => "Destiny - Diamond I ADC - Number 1 Draven player..."
122
+ c.teams # => [#<Kappa::V2::Team>]
123
+ c.videos # => [#<Kappa::V2::Video>, ...]
124
+ c.followers # => [#<Kappa::V2::User>, ...]
125
+ ```
126
+
127
+ ### <a id="streams"></a>Streams
128
+
129
+ Streams are video broadcasts that are currently live. They belong to a [user](#users) and are part of a
130
+ [channel](#channels). See the [`Stream`](http://rdoc.info/gems/kappa/Twitch/V2/Stream) and
131
+ [`Streams`](http://rdoc.info/gems/kappa/Twitch/V2/Streams) documentation.
132
+
133
+ ```ruby
134
+ s = Twitch.streams.get('idrajit')
135
+ s.nil? # => false (currently live)
136
+ s.game_name # => "StarCraft II: Heart of the Swarm"
137
+ s.viewer_count # => 7267
138
+ s.channel.url # => "http://www.twitch.tv/idrajit"
139
+ ```
140
+
141
+ ### <a id="users"></a>Users
142
+
143
+ These are members of the Twitch community who have a Twitch account. If broadcasting, they can own a
144
+ [stream](#streams) that they can broadcast on their [channel](#channels). If mainly viewing, they might
145
+ follow or subscribe to channels. See the [`User`](http://rdoc.info/gems/kappa/Twitch/V2/User) documentation.
146
+
147
+ ```ruby
148
+ u = Twitch.users.get('snoopeh')
149
+ u.nil? # => false (user exists)
150
+ u.channel # => #<Kappa::V2::Channel>
151
+ u.following.map(&:name) # => ["national_esl1", "dreamhacklol", "riotgames"]
152
+ ```
153
+
154
+ ### <a id="videos"></a>Videos
155
+
156
+ Videos are broadcasts or highlights owned by a [channel](#channels). Broadcasts are unedited videos that are saved
157
+ after a streaming session. Highlights are videos edited from broadcasts by the channel's owner. See the
158
+ [`Video`](http://rdoc.info/gems/kappa/Twitch/V2/Video) and [`Videos`](http://rdoc.info/gems/kappa/Twitch/V2/Videos)
159
+ documentation.
160
+
161
+ ```ruby
162
+ v = Twitch.videos.get('a395995729')
163
+ v.nil? # => false (video exists)
164
+ v.title # => "DreamHack Open Stockholm 26-27 April"
165
+ v.game_name # => "StarCraft II: Heart of the Swarm"
166
+ v.recorded_at # => 2013-04-26 18:33:48 UTC
167
+ v.view_count # => 12506
168
+ ```
169
+
170
+ ### <a id="teams"></a>Teams
171
+
172
+ Teams are an organization of [channels](#channels). See the [`Team`](http://rdoc.info/gems/kappa/Twitch/V2/Team)
173
+ documentation.
174
+
175
+ ```ruby
176
+ t = Twitch.teams.get('teamliquid')
177
+ t.nil? # => false (team exists)
178
+ t.display_name # => "TeamLiquid"
179
+ t.info # => "TeamLiquid is awesome. and esports. video games. \n\n"
180
+ t.updated_at # => 2013-05-24 00:17:10 UTC
181
+ ```
182
+
183
+ ### <a id="games"></a>Games
184
+
185
+ Games are categories (e.g. League of Legends, Diablo 3) used by [streams](#streams) and [channels](#channels).
186
+ Games can be searched for by query. See the [`Game`](http://rdoc.info/gems/kappa/Twitch/V2/Game),
187
+ [`Games`](http://rdoc.info/gems/kappa/Twitch/V2/Games), and
188
+ [`GameSuggestion`](http://rdoc.info/gems/kappa/Twitch/V2/GameSuggestion) documentation.
189
+
190
+ ```ruby
191
+ top = Twitch.games.top(:limit => 2)
192
+ top.map(&:name) # => ["League of Legends", "StarCraft II: Heart of the Swarm"]
193
+ ```
194
+
195
+ ```ruby
196
+ g = Twitch.games.top(:limit => 1).first
197
+ g.name # => "League of Legends"
198
+ g.channel_count # => 906
199
+ g.viewer_count # => 79223
200
+ g.box_images.medium_url # =>"http://static-cdn.jtvnw.net/ttv-boxart/31412.jpg"
201
+ ```
202
+
203
+ ```ruby
204
+ s = Twitch.games.find(:name => 'diablo', :live => true)
205
+ s.map(&:name) # => ["Diablo III", "Diablo II", "Diablo"]
206
+ s.map(&:popularity) # => [120, 4, 1]
207
+ ```
208
+
209
+ ## Errors
210
+
211
+ All errors derive from `Twitch::Error`.
212
+
213
+ - `Twitch:Error` - Base class for all errors.
214
+ - `Twitch::Error::ResponseError` - Base class for all Twitch.tv API response errors.
215
+ - `Twitch::Error::FormatError` - The returned data was incorrectly formatted (e.g. invalid JSON).
216
+ - `Twitch::Error::ClientError` - The server returned a 4xx status code.
217
+ - `Twitch::Error::ServerError` - The server returned a 5xx status code.
218
+
219
+ All `ResponseError` errors have additional diagnostic information:
220
+
221
+ ```ruby
222
+ e.status # => 422
223
+ e.body # => '{"status":422,"message":"...","error":"..."}'
224
+ e.url # => "https://api.twitch.tv/streams/desrow"
225
+ ```
226
+
227
+ See the [`ResponseError`](http://rdoc.info/gems/kappa/Twitch/Error/ResponseError) documentation.
228
+
229
+ ## Documentation
230
+
231
+ - Current release: [http://rdoc.info/gems/kappa/frames](http://rdoc.info/gems/kappa/frames)
232
+ - Latest master: [http://rdoc.info/github/schmich/kappa/frames](http://rdoc.info/github/schmich/kappa/frames)
233
+ - Twitch REST API: [https://github.com/justintv/Twitch-API](https://github.com/justintv/Twitch-API)
234
+
235
+ ## Versioning
236
+
237
+ ### Library version
238
+
239
+ Kappa adheres to the [Semantic Versioning 2.0.0](http://semver.org/) specification. Most importantly, any
240
+ compatibility- or API-breaking changes will result in a new major version (e.g. `1.x.x` to `2.x.x`). Because
241
+ of this, you should use a [pessimistic version constraint](http://docs.rubygems.org/read/chapter/16#page74) when
242
+ taking a dependency on this library. For example:
243
+
244
+ ```ruby
245
+ gem 'kappa', '~> 1.0'
246
+ ```
247
+
248
+ Any new backwards-compatible features will result in a new minor version (e.g. `x.1.x` to `x.2.x`) while any
249
+ backwards-compatible bugfixes will result in a new patch version (e.g. `x.x.1` to `x.x.2`).
250
+
251
+ ### Twitch API versions
252
+
253
+ Twitch supports multiple versions of their API simultaneously, with each version potentially providing different data
254
+ and behaving differently. Because of this, you can specify which version of the Twitch API you wish to use.
255
+ This is done through Kappa configuration.
256
+
257
+ For example, if you want to use the V2 Twitch API:
258
+
259
+ ```ruby
260
+ Twitch.configure do |config|
261
+ config.client_id = 'sc2daily-v1.0.0'
262
+ config.api = Twitch::V2
263
+ end
264
+ ```
265
+
266
+ `Twitch::V2` is the default and is currently the only supported API version.
267
+
268
+ ## Contributing
269
+
270
+ - [Fork and clone the repo.](http://help.github.com/fork-a-repo/)
271
+ - [Create a branch for your changes.](http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging)
272
+ - Run `bundle install` to install development requirements.
273
+ - Implement your feature or bug fix.
274
+ - Add specs under the `spec` folder to prevent regressions or to test new code.
275
+ - Add [YARD](http://rubydoc.info/docs/yard/file/docs/GettingStarted.md) documentation for new features. Run `rake yard` to view documentation.
276
+ - Run `rake coverage` to run specs with code coverage. All specs must pass; coverage must remain at 100%. Run `rake coverage:view` to see a detailed report.
277
+ - Commit and push your changes.
278
+ - [Submit a pull request.](http://help.github.com/send-pull-requests/)
279
+
280
+ ## License
281
+
282
+ Copyright &copy; 2013 Chris Schmich
283
+ <br />
284
+ MIT License, See [LICENSE](LICENSE) for details.
285
+ [![githalytics.com alpha](https://cruel-carlota.pagodabox.com/b885add21cf8f2b473d1394edc1cf5b4 "githalytics.com")](http://githalytics.com/schmich/kappa)