jtv 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -38
  3. data/lib/jtv/channel.rb +4 -11
  4. data/lib/jtv/client.rb +1 -1
  5. data/lib/jtv/stream.rb +4 -4
  6. data/lib/jtv/user.rb +1 -5
  7. data/lib/jtv/version.rb +1 -1
  8. data/spec/features/channel_spec.rb +8 -27
  9. data/spec/features/stream_spec.rb +8 -10
  10. data/spec/features/user_spec.rb +1 -8
  11. data/spec/jtv/channel_spec.rb +3 -19
  12. data/spec/jtv/client_spec.rb +2 -5
  13. data/spec/jtv/defaults_spec.rb +6 -6
  14. data/spec/jtv/stream_spec.rb +7 -6
  15. data/spec/jtv/user_spec.rb +1 -8
  16. data/spec/jtv_spec.rb +2 -2
  17. data/spec/vcr_cassettes/Jtv_Channel/_archives/returns_an_array_of_archives_for_given_channel.yml +42 -37
  18. data/spec/vcr_cassettes/Jtv_Channel/_channel_show/provides_information_for_a_given_channel.yml +40 -42
  19. data/spec/vcr_cassettes/Jtv_Channel/_fans/fetches_fans_for_a_given_channel.yml +65 -351
  20. data/spec/vcr_cassettes/Jtv_Stream/_featured/returns_a_list_of_streams.yml +1552 -0
  21. data/spec/vcr_cassettes/Jtv_Stream/_search/returns_streams_based_on_search_query.yml +66 -334
  22. data/spec/vcr_cassettes/Jtv_Stream/_summary/returns_a_summary_of_Justin_tv_data.yml +70 -0
  23. data/spec/vcr_cassettes/Jtv_User/_user_show/fetches_information_on_user.yml +37 -34
  24. data/spec/vcr_config.rb +0 -4
  25. metadata +26 -32
  26. data/spec/vcr_cassettes/Jtv_Channel/_chat_embed/returns_an_iframe_for_chat.yml +0 -46
  27. data/spec/vcr_cassettes/Jtv_Channel/_embed/returns_a_string_containing_an_embed_object.yml +0 -53
  28. data/spec/vcr_cassettes/Jtv_Stream/_list/returns_a_list_of_streams_for_a_category.yml +0 -1692
  29. data/spec/vcr_cassettes/Jtv_Stream/_summary/returns_a_summary_of_Jutstin_tv_data.yml +0 -51
  30. data/spec/vcr_cassettes/Jtv_User/_favorites/fetches_favorites_from_user.yml +0 -88
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d085a732bc7bbe64b5b2e585c7cbfa014843ad5
4
- data.tar.gz: 4be3c9e63ebf8088c69bd66cc37f47e428a49796
3
+ metadata.gz: a0454f3e0561798a0d6df4d666c1fc46cfe477c3
4
+ data.tar.gz: e8fad1ba471ef2a2fafe9469c9bbc314af71b6bf
5
5
  SHA512:
6
- metadata.gz: 6270b531f17caad9d4d230e12b33e8330eb0ce64bf7772529652a22242107128640da7bb926f7a06a02c09fd4e779077d3d73ec041a0a2a6d1450539eb80a47e
7
- data.tar.gz: 3be926bab00fc3d9f4a74aa22435426ce3e511cfcda66d88f82e092131decd5697388de8e687addb167eda7db7d958772cc0d22d2292401ebfcd9055752c1ed3
6
+ metadata.gz: 7012b5ffe47031f3730932b3b25f6fe11e09268eff3764e7ffc862ac7c72e9b243da2a1e181e75248f6f2ada575bee884f67a406956006d6909eca1766941a8e
7
+ data.tar.gz: a971c9eecc1a2abd150b70693c9d1aff76433900911192f4ff65c92fead328abe73f3114aadc3b9a304ebb24bd2702c2309c83bd91a7eb3137e604b0bbc1aaae
data/README.md CHANGED
@@ -68,18 +68,16 @@ category).
68
68
 
69
69
  You can include a channel, language, or category in your search params.
70
70
 
71
- #### List
71
+ #### Featured
72
72
 
73
73
  Returns stream information for all live channels. The results are sorted by the
74
74
  current number of viewers, with the most popular channels first.
75
75
 
76
76
  ```ruby
77
- Jtv.list category: 'gaming', limit: 1
77
+ Jtv.featured
78
78
  # [{'name' => 'live_user_wingsofdeath'...}]
79
79
  ```
80
80
 
81
- You can include a channel, category, title, language, limit, and offset.
82
-
83
81
  #### Search
84
82
 
85
83
  Returns stream information for the live channels that match a search query. The
@@ -107,17 +105,6 @@ Returns extended information for a user, specified by user id or login.
107
105
 
108
106
  Pass in a user's login.
109
107
 
110
- #### Favorites
111
-
112
- Get all channels who are favorites of a user.
113
-
114
- ```ruby
115
- Jtv.favorites 'mockra'
116
- # [{}]
117
- ```
118
-
119
- Pass in a user's login.
120
-
121
108
  ### Channel
122
109
 
123
110
  #### Show
@@ -160,29 +147,6 @@ channel id or login must be included as a param. Optional limit and offset
160
147
  params (defaults are 20 for limit and 0 for offset). Results returned are
161
148
  limited to 100. Results are returned in create date order
162
149
 
163
- #### Embed
164
-
165
- Get embed code for a channel.
166
-
167
- ```ruby
168
- Jtv.embed 'justin', volume: 50
169
- # "<object></object>"
170
- ```
171
-
172
- You can supply params volume, publisher_guard (for the default channel password
173
- to try), height, width, and watermark_position
174
-
175
- #### Chat Embed
176
-
177
- Get chat embed code for a channel.
178
-
179
- ```ruby
180
- Jtv.chat_embed 'justin', height: 1000
181
- # "<iframe></iframe>"
182
- ```
183
-
184
- You can supply params height and width.
185
-
186
150
  ## Contributing
187
151
 
188
152
  Contributions and feedback are more than welcome and highly encouraged.
@@ -1,25 +1,18 @@
1
1
  module Jtv
2
2
  module Channel
3
3
  def channel_show id
4
- get "channel/show/#{id}.json"
4
+ get "channels/#{id}.json"
5
5
  end
6
6
 
7
7
  def fans params = {}
8
+ # authenticated
8
9
  id = params[:id] || params[:channel]
9
- get "channel/fans/#{id}.json", params
10
+ get "channels/#{id}/follows.json", params
10
11
  end
11
12
 
12
13
  def archives params = {}
13
14
  id = params[:id] || params[:channel]
14
- get "channel/archives/#{id}.json", params
15
- end
16
-
17
- def embed id, params = {}
18
- request(:get, "channel/embed/#{id}", params)[:body]
19
- end
20
-
21
- def chat_embed id, params = {}
22
- request(:get, "channel/chat_embed/#{id}", params)[:body]
15
+ get "channels/#{id}/videos.json", params
23
16
  end
24
17
  end
25
18
  end
@@ -37,7 +37,7 @@ module Jtv
37
37
  end
38
38
 
39
39
  def connection
40
- @connection ||= Faraday.new 'http://api.justin.tv', options
40
+ @connection ||= Faraday.new 'https://api.twitch.tv/kraken', options
41
41
  end
42
42
 
43
43
  def req_header method, path, params
@@ -3,16 +3,16 @@ require 'uri'
3
3
  module Jtv
4
4
  module Stream
5
5
  def summary params = {}
6
- get 'stream/summary.json', params
6
+ get 'streams/summary.json', params
7
7
  end
8
8
 
9
- def list params = {}
10
- get 'stream/list.json', params
9
+ def featured params = {}
10
+ get 'streams/featured.json', params
11
11
  end
12
12
 
13
13
  def search query, params = {}
14
14
  query = URI.escape query
15
- get "stream/search/#{query}.json", params
15
+ get "search/streams.json?q=#{query}", params
16
16
  end
17
17
  end
18
18
  end
@@ -1,11 +1,7 @@
1
1
  module Jtv
2
2
  module User
3
3
  def user_show id
4
- get "user/show/#{id}.json"
5
- end
6
-
7
- def favorites id
8
- get "user/favorites/#{id}.json"
4
+ get "users/#{id}.json"
9
5
  end
10
6
  end
11
7
  end
@@ -1,3 +1,3 @@
1
1
  module Jtv
2
- VERSION = "1.0.1"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -5,44 +5,25 @@ describe Jtv::Channel do
5
5
  describe '#fans', :vcr do
6
6
  it 'fetches fans for a given channel' do
7
7
  fans = Jtv.fans id: 'officecam'
8
- expect(fans).to be_an Array
9
- expect(fans.first).to be_a Hash
10
- expect(fans.first['id']).to be_an Integer
8
+ expect(fans['follows']).to be_an Array
9
+ expect(fans['follows'].first).to be_a Hash
10
+ expect(fans['follows'].first['user']['_id']).to be_an Integer
11
11
  end
12
12
  end
13
13
 
14
14
  describe '#archives', :vcr do
15
15
  it 'returns an array of archives for given channel' do
16
- archives = Jtv.archives channel: 'dotahut', limit: 2
17
- expect(archives).to be_an Array
18
- expect(archives.count).to eq 2
19
- expect(archives.first['video_codec']).to eq 'AVC'
16
+ archives = Jtv.archives channel: 'test_channel', limit: 2
17
+ expect(archives['videos']).to be_an Array
18
+ expect(archives['videos'].count).to eq 2
19
+ expect(archives['videos'].first['broadcast_type']).to eq 'highlight'
20
20
  end
21
21
  end
22
22
 
23
23
  describe '#channel_show', :vcr do
24
24
  it 'provides information for a given channel' do
25
25
  channel = Jtv.channel_show 'apidemo'
26
- expect(channel['login']).to eq 'apidemo'
27
- end
28
- end
29
-
30
- describe '#embed', :vcr do
31
- it 'returns a string containing an embed object' do
32
- embed = Jtv.embed 'justin', volume: 50
33
- expect(embed).to be_a String
34
- expect(embed).to include 'volume=50'
35
- expect(embed).to include 'object'
36
- expect(embed).to include 'x-shockwave-flash'
37
- end
38
- end
39
-
40
- describe '#chat_embed', :vcr do
41
- it 'returns an iframe for chat' do
42
- chat = Jtv.chat_embed 'justin', height: 50
43
- expect(chat).to be_a String
44
- expect(chat).to include '50'
45
- expect(chat).to include 'iframe'
26
+ expect(channel['display_name']).to eq 'Apidemo'
46
27
  end
47
28
  end
48
29
  end
@@ -3,25 +3,23 @@ require 'vcr_config'
3
3
 
4
4
  describe Jtv::Stream do
5
5
  describe '#summary', :vcr do
6
- it 'returns a summary of Jutstin.tv data' do
6
+ it 'returns a summary of Justin.tv data' do
7
7
  summary = Jtv.summary
8
- expect(summary['streams_count']).to be > 0
8
+ expect(summary['viewers']).to be > 0
9
9
  end
10
10
  end
11
11
 
12
- describe '#list', :vcr do
13
- it 'returns a list of streams for a category' do
14
- list = Jtv.list category: 'gaming'
15
- expect(list.count).to eq 50
16
- expect(list.first['category']).to match(/gaming/i)
12
+ describe '#featured', :vcr do
13
+ it 'returns a list of streams' do
14
+ list = Jtv.featured
15
+ expect(list['featured'].count).to eq 25
17
16
  end
18
17
  end
19
18
 
20
19
  describe '#search', :vcr do
21
20
  it 'returns streams based on search query' do
22
- search = Jtv.search 'league of legends', limit: 10
23
- expect(search.count).to eq 10
24
- expect(search.first['category']).to eq 'entertainment'
21
+ search = Jtv.search 'starcraft'
22
+ expect(search['_total']).to be > 0
25
23
  end
26
24
  end
27
25
  end
@@ -5,14 +5,7 @@ describe Jtv::User do
5
5
  describe '#user_show', :vcr do
6
6
  it 'fetches information on user' do
7
7
  user = Jtv.user_show 'augury'
8
- expect(user['login']).to eq 'augury'
9
- end
10
- end
11
-
12
- describe '#favorites', :vcr do
13
- it 'fetches favorites from user' do
14
- user = Jtv.favorites 'augury'
15
- expect(user.first['language']).to eq 'en'
8
+ expect(user['display_name']).to eq 'Augury'
16
9
  end
17
10
  end
18
11
  end
@@ -7,14 +7,14 @@ describe Jtv::Channel do
7
7
 
8
8
  describe '#channel_show' do
9
9
  it 'sends path with user to get' do
10
- client.should_receive(:get).with 'channel/show/test.json'
10
+ expect(client).to receive(:get).with 'channels/test.json'
11
11
  client.channel_show 'test'
12
12
  end
13
13
  end
14
14
 
15
15
  describe '#fans' do
16
16
  it 'sends fans and params to get' do
17
- client.should_receive(:get).with 'channel/fans/test.json',
17
+ expect(client).to receive(:get).with 'channels/test/follows.json',
18
18
  { channel: 'test' }
19
19
  client.fans channel: 'test'
20
20
  end
@@ -22,25 +22,9 @@ describe Jtv::Channel do
22
22
 
23
23
  describe '#archives' do
24
24
  it 'sends archives and params to get' do
25
- client.should_receive(:get).with 'channel/archives/test.json',
25
+ expect(client).to receive(:get).with 'channels/test/videos.json',
26
26
  { id: 'test' }
27
27
  client.archives id: 'test'
28
28
  end
29
29
  end
30
-
31
- describe '#embed' do
32
- it 'sends :get, embed path with login and params to request' do
33
- client.should_receive(:request).with(:get, 'channel/embed/test',
34
- { volume: 50 }).and_return({})
35
- client.embed 'test', volume: 50
36
- end
37
- end
38
-
39
- describe '#chat_embed' do
40
- it 'sends :get, chat_embed path with login and params to request' do
41
- client.should_receive(:request).with(:get, 'channel/chat_embed/justin',
42
- { height: 50 }).and_return({})
43
- client.chat_embed 'justin', height: 50
44
- end
45
- end
46
30
  end
@@ -6,7 +6,7 @@ describe Jtv::Client do
6
6
 
7
7
  describe '#get' do
8
8
  it 'fetches JSON based on method, path, and params' do
9
- client.should_receive(:get_json).with(:get, '/test/', {})
9
+ expect(client).to receive(:get_json).with(:get, '/test/', {})
10
10
  client.get '/test/'
11
11
  end
12
12
  end
@@ -20,7 +20,7 @@ describe Jtv::Client do
20
20
  context 'when including stream' do
21
21
  it 'has access to summary, list, and search' do
22
22
  expect(client).to respond_to :summary
23
- expect(client).to respond_to :list
23
+ expect(client).to respond_to :featured
24
24
  expect(client).to respond_to :search
25
25
  end
26
26
  end
@@ -28,7 +28,6 @@ describe Jtv::Client do
28
28
  context 'when including user' do
29
29
  it 'has access to show and favorites' do
30
30
  expect(client).to respond_to :user_show
31
- expect(client).to respond_to :favorites
32
31
  end
33
32
  end
34
33
 
@@ -37,8 +36,6 @@ describe Jtv::Client do
37
36
  expect(client).to respond_to :channel_show
38
37
  expect(client).to respond_to :fans
39
38
  expect(client).to respond_to :archives
40
- expect(client).to respond_to :embed
41
- expect(client).to respond_to :chat_embed
42
39
  end
43
40
  end
44
41
  end
@@ -5,20 +5,20 @@ class Client; include Jtv::Defaults; end
5
5
  describe Jtv::Defaults do
6
6
  describe '#credentials' do
7
7
  before do
8
- Jtv.should_receive :consumer_key
9
- Jtv.should_receive :consumer_secret
8
+ expect(Jtv).to receive(:consumer_key)
9
+ expect(Jtv).to receive(:consumer_secret)
10
10
  end
11
11
 
12
12
  it 'uses Jtv settings by default' do
13
- Jtv.should_receive :oauth_token
14
- Jtv.should_receive :oauth_secret
13
+ expect(Jtv).to receive(:oauth_token)
14
+ expect(Jtv).to receive(:oauth_secret)
15
15
  Client.new.credentials
16
16
  end
17
17
 
18
18
  it 'uses set oauth values if available' do
19
19
  client = Client.new
20
- client.stub(:oauth_token) { 'token' }
21
- client.stub(:oauth_secret) { 'secret' }
20
+ allow(client).to receive(:oauth_token).and_return 'token'
21
+ allow(client).to receive(:oauth_secret).and_return 'secret'
22
22
  client.credentials
23
23
  end
24
24
  end
@@ -7,22 +7,23 @@ describe Jtv::Stream do
7
7
 
8
8
  describe '#summary' do
9
9
  it 'sends summary and params to get' do
10
- client.should_receive(:get).with 'stream/summary.json',
10
+ expect(client).to receive(:get).with 'streams/summary.json',
11
11
  { channel: 'test' }
12
12
  client.summary channel: 'test'
13
13
  end
14
14
  end
15
15
 
16
- describe '#list' do
17
- it 'sends list and params to get' do
18
- client.should_receive(:get).with 'stream/list.json', { channel: 'test' }
19
- client.list channel: 'test'
16
+ describe '#featured' do
17
+ it 'sends featured and params to get' do
18
+ expect(client).to receive(:get).with 'streams/featured.json',
19
+ { channel: 'test' }
20
+ client.featured channel: 'test'
20
21
  end
21
22
  end
22
23
 
23
24
  describe '#search' do
24
25
  it 'sends search and params to get' do
25
- client.should_receive(:get).with 'stream/search/test%20ruby.json',
26
+ expect(client).to receive(:get).with 'search/streams.json?q=test%20ruby',
26
27
  { limit: 50 }
27
28
  client.search 'test ruby', limit: 50
28
29
  end
@@ -7,15 +7,8 @@ describe Jtv::User do
7
7
 
8
8
  describe '#user_show' do
9
9
  it 'sends path with user to get' do
10
- client.should_receive(:get).with 'user/show/test.json'
10
+ expect(client).to receive(:get).with 'users/test.json'
11
11
  client.user_show 'test'
12
12
  end
13
13
  end
14
-
15
- describe '#favorites' do
16
- it 'sends favorites path with user to get' do
17
- client.should_receive(:get).with 'user/favorites/test.json'
18
- client.favorites 'test'
19
- end
20
- end
21
14
  end
@@ -20,11 +20,11 @@ describe Jtv do
20
20
 
21
21
  context 'when delegating to client' do
22
22
  before do
23
- Jtv.stub(:client) { client }
23
+ allow(Jtv).to receive(:client).and_return client
24
24
  end
25
25
 
26
26
  it 'calls the correct method on client' do
27
- client.should_receive(:get).with '/test'
27
+ expect(client).to receive(:get).with '/test'
28
28
  Jtv.get '/test'
29
29
  end
30
30
 
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://api.justin.tv/channel/archives/dotahut.json?channel=dotahut&limit=2
5
+ uri: https://api.twitch.tv/kraken/channels/test_channel/videos.json?channel=test_channel&limit=2
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -12,8 +12,9 @@ http_interactions:
12
12
  User-Agent:
13
13
  - Jtv Gem
14
14
  Authorization:
15
- - OAuth oauth_nonce="313bbd99f785484b9cf6e0f0152c1d9b", oauth_signature="OAnY7J6oMHXabdyDIx83PMfMjdw%3D",
16
- oauth_signature_method="HMAC-SHA1", oauth_timestamp="1368408351", oauth_version="1.0"
15
+ - OAuth oauth_consumer_key="", oauth_nonce="8021230e12a94d3c88b2a1cb8267140d",
16
+ oauth_signature="5dKQdylAXEJlV2OgZISmN0fzApk%3D", oauth_signature_method="HMAC-SHA1",
17
+ oauth_timestamp="1424824758", oauth_token="", oauth_version="1.0"
17
18
  Accept-Encoding:
18
19
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
19
20
  response:
@@ -24,44 +25,48 @@ http_interactions:
24
25
  Server:
25
26
  - nginx
26
27
  Date:
27
- - Mon, 13 May 2013 01:25:50 GMT
28
+ - Wed, 25 Feb 2015 00:39:19 GMT
28
29
  Content-Type:
29
- - application/json
30
- Transfer-Encoding:
31
- - chunked
30
+ - application/json; charset=utf-8
31
+ Content-Length:
32
+ - '395'
32
33
  Connection:
33
- - close
34
+ - keep-alive
35
+ Status:
36
+ - 200 OK
37
+ X-Api-Version:
38
+ - '3'
39
+ X-Frame-Options:
40
+ - SAMEORIGIN
41
+ Cache-Control:
42
+ - max-age=300, public
34
43
  Vary:
35
- - Accept-Language, Cookie
36
- Content-Language:
37
- - en
44
+ - Accept-Encoding
45
+ X-Ua-Compatible:
46
+ - IE=Edge,chrome=1
47
+ Etag:
48
+ - '"83df9a8094218f78b5b5710f333b01a9"'
49
+ X-Request-Id:
50
+ - d9907a8420f2d723dab29ff13bb1380e
51
+ X-Runtime:
52
+ - '0.058918'
53
+ Accept-Ranges:
54
+ - bytes
55
+ X-Varnish:
56
+ - '2681479047'
57
+ Age:
58
+ - '0'
59
+ Via:
60
+ - 1.1 varnish
61
+ X-Mh-Cache:
62
+ - appcache2; M
38
63
  Front-End-Https:
39
- - 'off'
64
+ - 'on'
40
65
  body:
41
66
  encoding: UTF-8
42
- string: '[{"video_file_url": "http://store33.media33.justin.tv/archives/2013-3-3/live_user_dotahut_1362345627.flv",
43
- "kind": null, "tag_list": "", "video_rotation": 0, "title": "DotaHut Invitational:
44
- Fnatic vs. Mouz (Grand Finals) casted by Maut", "created_on": "2013-03-03
45
- 21:45:21 UTC", "stream_name": "live_user_dotahut", "filtered": "unchecked",
46
- "video_bitrate": null, "updated_on": "2013-05-12 15:53:11 UTC", "save_forever":
47
- "true", "id": 373537869, "file_name": "2013-3-3/live_user_dotahut_1362345627.flv",
48
- "broadcaster": "delay", "broadcast_id": 5016397072, "user_id": 38409951, "origin_name":
49
- "3842704", "file_size": 286290322, "deleted_by_user": "false", "broadcast_part":
50
- "4", "keyframes": null, "length": "1470", "image_url_medium": "http://static-cdn.jtvnw.net/jtv.thumbs/archive-373537869-150x113.jpg",
51
- "servers": "35", "start_time": "2013-03-03 21:20:27 UTC", "last_part": "",
52
- "video_codec": "AVC", "audio_codec": "aac", "parent_archive_id": null, "description":
53
- null, "include_on_channel": "none", "status": null}, {"video_file_url": "http://store21.media21.justin.tv/archives/2013-3-3/live_user_dotahut_1362343814.flv",
54
- "kind": null, "tag_list": "", "video_rotation": 0, "title": "DotaHut Invitational:
55
- Fnatic vs. Mouz (Grand Finals) casted by Maut", "created_on": "2013-03-03
56
- 21:20:42 UTC", "stream_name": "live_user_dotahut", "filtered": "unchecked",
57
- "video_bitrate": null, "updated_on": "2013-03-03 21:20:44 UTC", "save_forever":
58
- "true", "id": 373529497, "file_name": "2013-3-3/live_user_dotahut_1362343814.flv",
59
- "broadcaster": "delay", "broadcast_id": 5016397072, "user_id": 38409951, "origin_name":
60
- "3842704", "file_size": 253298632, "deleted_by_user": "false", "broadcast_part":
61
- "3", "keyframes": null, "length": "1812", "image_url_medium": "http://static-cdn.jtvnw.net/jtv.thumbs/archive-373529497-150x113.jpg",
62
- "servers": "22", "start_time": "2013-03-03 20:50:14 UTC", "last_part": "",
63
- "video_codec": "AVC", "audio_codec": "aac", "parent_archive_id": null, "description":
64
- null, "include_on_channel": "none", "status": null}]'
67
+ string: '{"_total":9,"_links":{"self":"https://api.twitch.tv/kraken/channels/test_channel/videos?limit=2&offset=0&user=test_channel","next":"https://api.twitch.tv/kraken/channels/test_channel/videos?limit=2&offset=2&user=test_channel"},"videos":[{"title":"robot
68
+ greeting 2","description":"greeting","broadcast_id":null,"status":"recorded","tag_list":"","_id":"c213462","recorded_at":"2009-12-15T10:03:04Z","game":null,"length":75,"preview":null,"url":"http://www.twitch.tv/test_channel/c/213462","views":2,"broadcast_type":"highlight","_links":{"self":"https://api.twitch.tv/kraken/videos/c213462","channel":"https://api.twitch.tv/kraken/channels/test_channel"},"channel":{"name":"test_channel","display_name":"Test_channel"}},{"title":"echobot2","description":"testing
69
+ the bot","broadcast_id":null,"status":"recorded","tag_list":"","_id":"c213497","recorded_at":"2009-12-15T07:58:43Z","game":null,"length":43,"preview":null,"url":"http://www.twitch.tv/test_channel/c/213497","views":0,"broadcast_type":"highlight","_links":{"self":"https://api.twitch.tv/kraken/videos/c213497","channel":"https://api.twitch.tv/kraken/channels/test_channel"},"channel":{"name":"test_channel","display_name":"Test_channel"}}]}'
65
70
  http_version:
66
- recorded_at: Mon, 13 May 2013 01:25:51 GMT
67
- recorded_with: VCR 2.4.0
71
+ recorded_at: Wed, 25 Feb 2015 00:39:19 GMT
72
+ recorded_with: VCR 2.9.3