netflix 0.1.0 → 0.1.1

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.
@@ -4,47 +4,50 @@ Copyright (c) 2012 Dean Holdren
4
4
  To install: gem install netflix
5
5
 
6
6
  This gem uses Netflix's OAuth REST API, you first need to register an application with Netflix at http://developer.netflix.com/apps/register/
7
+
7
8
  This will provide you with a "consumer key", "consumer secret", and "application name"
8
9
 
9
10
  === To use unauthenticated features (catalog search):
10
11
  * TODO
11
12
 
12
13
  === To use authenticated features (i.e. queue management):
13
- * Netflix.consumer_key = <your consumer/developer key>
14
- Netflix.consumer_secret = <your consumer/developer secret>
14
+ * Set the consumer/developer config:
15
+ Netflix.consumer_key = <your consumer/developer key>
16
+ Netflix.consumer_secret = <your consumer/developer secret>
15
17
 
16
18
  * Do OAuth dance: (This is a one-time per user step, save the result somewhere.)
17
19
  1. Interactive (commandline/irb):
18
- This will open a netflix.com web page to ask the user to authenticate, and provide a pin.
19
- access_token = Netflix::Client.new.oauth
20
+ This will open a netflix.com web page to ask the user to authenticate, and provide a pin.
21
+ access_token = Netflix::Client.new.oauth
20
22
 
21
23
  2. or Web application (Rails/Sinatra/etc), define a URL that can handle the callback
22
- request_token, auth_url = Netflix::Client.new.oauth_via_callback(my_callback_url)
23
- session[:request_token] = request_token
24
- redirect_to auth_url
25
-
26
- Then in the handler retrieve the :oauth_verifier out of the request params
27
- oauth_verifier = params[:oauth_verifier]
28
- request_token = session[:request_token]
29
- access_token = Netflix::Client.new.handle_oauth_callback(request_token, oauth_verifier)
24
+ request_token, auth_url = Netflix::Client.new.oauth_via_callback(my_callback_url)
25
+ session[:request_token] = request_token
26
+ redirect_to auth_url
27
+
28
+ Then in the handler for "my_callback_url" (i.e. a Rails controller action) retrieve the :oauth_verifier out of the request params
29
+ oauth_verifier = params[:oauth_verifier]
30
+ request_token = session[:request_token]
31
+ access_token = Netflix::Client.new.handle_oauth_callback(request_token, oauth_verifier)
30
32
 
31
33
 
32
34
  * After OAuth credentials are established:
33
- access_token = access_token.token
34
- access_secret = access_token.secret
35
- user_id = access_token.params["user_id"]
35
+ access_token = access_token.token
36
+ access_secret = access_token.secret
37
+ user_id = access_token.params["user_id"]
38
+
36
39
  (Record these, for example in a User table in a database)
37
40
 
38
- client = Netflix::Client.new(access_token, access_token_secret)
39
- user = client.user(user_id)
40
- queue = user.available_disc_queue
41
- discs = queue.discs
42
- disc_one = discs[0]
43
- puts "#{disc_one.title} #{disc_one.id}"
44
- queue.remove(1) #queue is 1-based, so this is first disc
41
+ client = Netflix::Client.new(access_token, access_token_secret)
42
+ user = client.user(user_id)
43
+ queue = user.available_disc_queue
44
+ discs = queue.discs
45
+ disc_one = discs[0]
46
+ puts "#{disc_one.title} #{disc_one.id}"
47
+ queue.remove(1) #queue is 1-based, so this is first disc
45
48
 
46
49
  === Credits
47
- This work is based on: REST API documentation of Netflix (http://developer.netflix.com),
48
- with some help from twitter gem for OAuth ideas https://github.com/jnunemaker/twitter/
50
+ This work is based on: REST API documentation of Netflix (http://developer.netflix.com),
51
+ with some help from twitter gem for OAuth ideas https://github.com/jnunemaker/twitter/
49
52
 
50
53
 
data/Rakefile CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'rake/testtask'
2
- #require 'rake/gempackagetask'
3
2
  require 'rubygems/package_task'
4
3
 
5
4
  Rake::TestTask.new("test") { |t|
@@ -12,7 +11,7 @@ Rake::TestTask.new("test") { |t|
12
11
 
13
12
  gem_spec = Gem::Specification.new do |s|
14
13
  s.name = "netflix"
15
- s.version = "0.1.0"
14
+ s.version = "0.1.1"
16
15
  s.authors = ["Dean Holdren"]
17
16
  s.date = %q{2012-01-09}
18
17
  s.description = "Ruby Netflix API wrapper"
@@ -33,10 +32,6 @@ gem_spec = Gem::Specification.new do |s|
33
32
  s.add_development_dependency("yaml")
34
33
  end
35
34
 
36
- #Rake::GemPackageTask.new(gem_spec) do |t|
37
- # t.need_zip = true
38
- #end
39
-
40
35
  Gem::PackageTask.new(gem_spec) do |pkg|
41
36
  pkg.need_zip = true
42
37
  end
@@ -39,8 +39,12 @@ module Netflix
39
39
  end
40
40
 
41
41
  def discs
42
- queue_items = [queue_item].flatten
43
- queue_items.map {|queue_item| Disc.new(queue_item)}
42
+ if queue_item
43
+ queue_items = [queue_item].flatten
44
+ queue_items.map {|queue_item| Disc.new(queue_item)}
45
+ else
46
+ []
47
+ end
44
48
  end
45
49
 
46
50
  private
@@ -1169,3 +1169,29 @@ nuid_sub2:
1169
1169
  body:
1170
1170
  delete:
1171
1171
  body:
1172
+ empty_queue:
1173
+ get:
1174
+ body: |
1175
+ {"queue": {
1176
+ "link": [
1177
+ {
1178
+ "href": "http://api.netflix.com/users/empty_queue/queues/disc/available",
1179
+ "rel": "http://schemas.netflix.com/queues.available",
1180
+ "title": "available queue"
1181
+ },
1182
+ {
1183
+ "href": "http://api.netflix.com/users/empty_queue/queues/disc/saved",
1184
+ "rel": "http://schemas.netflix.com/queues.saved",
1185
+ "title": "saved queue"
1186
+ }
1187
+ ],
1188
+ "results_per_page": "0",
1189
+ "url_template": "http://api.netflix.com/users/empty_queue/queues/disc?{-join|&|sort|start_index|max_results}",
1190
+ "start_index": "0",
1191
+ "etag": "0",
1192
+ "number_of_results": "0"
1193
+ }}
1194
+ post:
1195
+ body:
1196
+ delete:
1197
+ body:
@@ -205,4 +205,73 @@ nuid_sub2:
205
205
  }
206
206
  ]},
207
207
  "user_id": "nuid_sub2"
208
+ }}
209
+ empty_queue:
210
+ get:
211
+ body: |
212
+ {"user": {
213
+ "can_instant_watch": true,
214
+ "first_name": "Empty",
215
+ "last_name": "Queue",
216
+ "link": [
217
+ {
218
+ "href": "http://api.netflix.com/users/empty_queue/queues",
219
+ "rel": "http://schemas.netflix.com/queues",
220
+ "title": "queues"
221
+ },
222
+ {
223
+ "href": "http://api.netflix.com/users/empty_queue/rental_history",
224
+ "rel": "http://schemas.netflix.com/rental_history",
225
+ "title": "rental history"
226
+ },
227
+ {
228
+ "href": "http://api.netflix.com/users/empty_queue/recommendations",
229
+ "rel": "http://schemas.netflix.com/recommendations",
230
+ "title": "recommendations"
231
+ },
232
+ {
233
+ "href": "http://api.netflix.com/users/empty_queue/title_states",
234
+ "rel": "http://schemas.netflix.com/title_states",
235
+ "title": "title states"
236
+ },
237
+ {
238
+ "href": "http://api.netflix.com/users/empty_queue/ratings",
239
+ "rel": "http://schemas.netflix.com/ratings",
240
+ "title": "ratings"
241
+ },
242
+ {
243
+ "href": "http://api.netflix.com/users/empty_queue/reviews",
244
+ "rel": "http://schemas.netflix.com/reviews",
245
+ "title": "reviews"
246
+ },
247
+ {
248
+ "href": "http://api.netflix.com/users/empty_queue/at_home",
249
+ "rel": "http://schemas.netflix.com/at_home",
250
+ "title": "at home"
251
+ },
252
+ {
253
+ "href": "http://api.netflix.com/users/empty_queue/feeds",
254
+ "rel": "http://schemas.netflix.com/feeds",
255
+ "title": "feeds"
256
+ }
257
+ ],
258
+ "max_maturity_level": {"category": {
259
+ "label": 1000000,
260
+ "scheme": "http://api.netflix.com/categories/maturity_level",
261
+ "term": 1000000
262
+ }},
263
+ "nickname": "foobar",
264
+ "preferred_formats": {"category": [
265
+ {
266
+ "label": "Blu-ray",
267
+ "scheme": "http://api.netflix.com/categories/title_formats",
268
+ "term": "Blu-ray"
269
+ },
270
+ {
271
+ "label": "DVD",
272
+ "scheme": "http://api.netflix.com/categories/title_formats",
273
+ "term": "DVD"
274
+ }
275
+ ]},
276
+ "user_id": "empty_queue"
208
277
  }}
@@ -61,5 +61,13 @@ class QueueTest < Test::Unit::TestCase
61
61
  # }
62
62
  #end
63
63
 
64
+ def test_empty_queue
65
+ stub_netflix_for_user('empty_queue')
66
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('empty_queue')
67
+ available_disc_queue = user.available_disc_queue
68
+ assert available_disc_queue, "Expected a disc_queue"
69
+ assert available_disc_queue.discs, "Expected the disc_queue to have a discs attribute"
70
+ assert_equal 0, available_disc_queue.discs.size, "Expected discs to be empty array #{available_disc_queue.discs[0]}}"
71
+ end
64
72
 
65
73
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netflix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-09 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth
16
- requirement: &2160650860 !ruby/object:Gem::Requirement
16
+ requirement: &2165140260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2160650860
24
+ version_requirements: *2165140260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &2160649060 !ruby/object:Gem::Requirement
27
+ requirement: &2165139740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2160649060
35
+ version_requirements: *2165139740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: launchy
38
- requirement: &2160647820 !ruby/object:Gem::Requirement
38
+ requirement: &2165139320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2160647820
46
+ version_requirements: *2165139320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: fakeweb
49
- requirement: &2160645840 !ruby/object:Gem::Requirement
49
+ requirement: &2165138840 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2160645840
57
+ version_requirements: *2165138840
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yaml
60
- requirement: &2160644720 !ruby/object:Gem::Requirement
60
+ requirement: &2165138360 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2160644720
68
+ version_requirements: *2165138360
69
69
  description: Ruby Netflix API wrapper
70
70
  email: deanholdren@gmail.com
71
71
  executables: []