netflix 0.1.0

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,208 @@
1
+ nuid_one:
2
+ get:
3
+ body: |
4
+ {"user": {
5
+ "can_instant_watch": true,
6
+ "first_name": "Jane",
7
+ "last_name": "Smith",
8
+ "link": [
9
+ {
10
+ "href": "http://api.netflix.com/users/nuid_one/queues",
11
+ "rel": "http://schemas.netflix.com/queues",
12
+ "title": "queues"
13
+ },
14
+ {
15
+ "href": "http://api.netflix.com/users/nuid_one/rental_history",
16
+ "rel": "http://schemas.netflix.com/rental_history",
17
+ "title": "rental history"
18
+ },
19
+ {
20
+ "href": "http://api.netflix.com/users/nuid_one/recommendations",
21
+ "rel": "http://schemas.netflix.com/recommendations",
22
+ "title": "recommendations"
23
+ },
24
+ {
25
+ "href": "http://api.netflix.com/users/nuid_one/title_states",
26
+ "rel": "http://schemas.netflix.com/title_states",
27
+ "title": "title states"
28
+ },
29
+ {
30
+ "href": "http://api.netflix.com/users/nuid_one/ratings",
31
+ "rel": "http://schemas.netflix.com/ratings",
32
+ "title": "ratings"
33
+ },
34
+ {
35
+ "href": "http://api.netflix.com/users/nuid_one/reviews",
36
+ "rel": "http://schemas.netflix.com/reviews",
37
+ "title": "reviews"
38
+ },
39
+ {
40
+ "href": "http://api.netflix.com/users/nuid_one/at_home",
41
+ "rel": "http://schemas.netflix.com/at_home",
42
+ "title": "at home"
43
+ },
44
+ {
45
+ "href": "http://api.netflix.com/users/nuid_one/feeds",
46
+ "rel": "http://schemas.netflix.com/feeds",
47
+ "title": "feeds"
48
+ }
49
+ ],
50
+ "max_maturity_level": {"category": {
51
+ "label": 1000000,
52
+ "scheme": "http://api.netflix.com/categories/maturity_level",
53
+ "term": 1000000
54
+ }},
55
+ "nickname": "foobar",
56
+ "preferred_formats": {"category": [
57
+ {
58
+ "label": "Blu-ray",
59
+ "scheme": "http://api.netflix.com/categories/title_formats",
60
+ "term": "Blu-ray"
61
+ },
62
+ {
63
+ "label": "DVD",
64
+ "scheme": "http://api.netflix.com/categories/title_formats",
65
+ "term": "DVD"
66
+ }
67
+ ]},
68
+ "user_id": "nuid_one"
69
+ }}
70
+
71
+ nuid_sub1:
72
+ get:
73
+ body: |
74
+ {"user": {
75
+ "can_instant_watch": false,
76
+ "first_name": "John",
77
+ "last_name": "Smith",
78
+ "link": [
79
+ {
80
+ "href": "http://api.netflix.com/users/nuid_sub1/queues",
81
+ "rel": "http://schemas.netflix.com/queues",
82
+ "title": "queues"
83
+ },
84
+ {
85
+ "href": "http://api.netflix.com/users/nuid_sub1/rental_history",
86
+ "rel": "http://schemas.netflix.com/rental_history",
87
+ "title": "rental history"
88
+ },
89
+ {
90
+ "href": "http://api.netflix.com/users/nuid_sub1/recommendations",
91
+ "rel": "http://schemas.netflix.com/recommendations",
92
+ "title": "recommendations"
93
+ },
94
+ {
95
+ "href": "http://api.netflix.com/users/nuid_sub1/title_states",
96
+ "rel": "http://schemas.netflix.com/title_states",
97
+ "title": "title states"
98
+ },
99
+ {
100
+ "href": "http://api.netflix.com/users/nuid_sub1/ratings",
101
+ "rel": "http://schemas.netflix.com/ratings",
102
+ "title": "ratings"
103
+ },
104
+ {
105
+ "href": "http://api.netflix.com/users/nuid_sub1/reviews",
106
+ "rel": "http://schemas.netflix.com/reviews",
107
+ "title": "reviews"
108
+ },
109
+ {
110
+ "href": "http://api.netflix.com/users/nuid_sub1/at_home",
111
+ "rel": "http://schemas.netflix.com/at_home",
112
+ "title": "at home"
113
+ },
114
+ {
115
+ "href": "http://api.netflix.com/users/nuid_sub1/feeds",
116
+ "rel": "http://schemas.netflix.com/feeds",
117
+ "title": "feeds"
118
+ }
119
+ ],
120
+ "max_maturity_level": {"category": {
121
+ "label": 1000000,
122
+ "scheme": "http://api.netflix.com/categories/maturity_level",
123
+ "term": 1000000
124
+ }},
125
+ "nickname": "foobar",
126
+ "preferred_formats": {"category": [
127
+ {
128
+ "label": "Blu-ray",
129
+ "scheme": "http://api.netflix.com/categories/title_formats",
130
+ "term": "Blu-ray"
131
+ },
132
+ {
133
+ "label": "DVD",
134
+ "scheme": "http://api.netflix.com/categories/title_formats",
135
+ "term": "DVD"
136
+ }
137
+ ]},
138
+ "user_id": "nuid_sub1"
139
+ }}
140
+ nuid_sub2:
141
+ get:
142
+ body: |
143
+ {"user": {
144
+ "can_instant_watch": true,
145
+ "first_name": "Jim",
146
+ "last_name": "Smith",
147
+ "link": [
148
+ {
149
+ "href": "http://api.netflix.com/users/nuid_sub2/queues",
150
+ "rel": "http://schemas.netflix.com/queues",
151
+ "title": "queues"
152
+ },
153
+ {
154
+ "href": "http://api.netflix.com/users/nuid_sub2/rental_history",
155
+ "rel": "http://schemas.netflix.com/rental_history",
156
+ "title": "rental history"
157
+ },
158
+ {
159
+ "href": "http://api.netflix.com/users/nuid_sub2/recommendations",
160
+ "rel": "http://schemas.netflix.com/recommendations",
161
+ "title": "recommendations"
162
+ },
163
+ {
164
+ "href": "http://api.netflix.com/users/nuid_sub2/title_states",
165
+ "rel": "http://schemas.netflix.com/title_states",
166
+ "title": "title states"
167
+ },
168
+ {
169
+ "href": "http://api.netflix.com/users/nuid_sub2/ratings",
170
+ "rel": "http://schemas.netflix.com/ratings",
171
+ "title": "ratings"
172
+ },
173
+ {
174
+ "href": "http://api.netflix.com/users/nuid_sub2/reviews",
175
+ "rel": "http://schemas.netflix.com/reviews",
176
+ "title": "reviews"
177
+ },
178
+ {
179
+ "href": "http://api.netflix.com/users/nuid_sub2/at_home",
180
+ "rel": "http://schemas.netflix.com/at_home",
181
+ "title": "at home"
182
+ },
183
+ {
184
+ "href": "http://api.netflix.com/users/nuid_sub2/feeds",
185
+ "rel": "http://schemas.netflix.com/feeds",
186
+ "title": "feeds"
187
+ }
188
+ ],
189
+ "max_maturity_level": {"category": {
190
+ "label": 1000000,
191
+ "scheme": "http://api.netflix.com/categories/maturity_level",
192
+ "term": 1000000
193
+ }},
194
+ "nickname": "foobar",
195
+ "preferred_formats": {"category": [
196
+ {
197
+ "label": "Blu-ray",
198
+ "scheme": "http://api.netflix.com/categories/title_formats",
199
+ "term": "Blu-ray"
200
+ },
201
+ {
202
+ "label": "DVD",
203
+ "scheme": "http://api.netflix.com/categories/title_formats",
204
+ "term": "DVD"
205
+ }
206
+ ]},
207
+ "user_id": "nuid_sub2"
208
+ }}
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ class NonUserClientTest < Test::Unit::TestCase
4
+ def setup
5
+ stub_netflix_for_user('nuid_one')
6
+ Netflix::Client.consumer_key = 'foo_consumer_key'
7
+ Netflix::Client.consumer_secret = 'foo_consumer_secret'
8
+ end
9
+
10
+ def test_client
11
+ @client = Netflix::Client.new()
12
+ end
13
+
14
+ #TODO
15
+ #def test_retrieve_catalog_item
16
+ # @client = Netflix::Client.new()
17
+ # catalog_results = @client.catalog_find('Mars Attacks')
18
+ # catalog_title = catalog_results[0]
19
+ #end
20
+ end
@@ -0,0 +1,65 @@
1
+ require 'test_helper'
2
+
3
+ class QueueTest < Test::Unit::TestCase
4
+ def setup
5
+ stub_netflix_for_user('nuid_one')
6
+ Netflix::Client.consumer_key = 'foo_consumer_key'
7
+ Netflix::Client.consumer_secret = 'foo_consumer_secret'
8
+ end
9
+
10
+ def test_get_available_disc_queue
11
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_one')
12
+ available_disc_queue = user.available_disc_queue
13
+ assert available_disc_queue
14
+ end
15
+
16
+ def test_get_discs
17
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_one')
18
+ available_disc_queue = user.available_disc_queue
19
+ assert available_disc_queue
20
+ discs = available_disc_queue.discs
21
+ assert discs
22
+ assert_equal 3, discs.size
23
+ disc_one = discs[0]
24
+ assert_equal "http://api.netflix.com/users/nuid_one/queues/disc/available/1/70167072", disc_one.id
25
+ assert_equal "Arthur", disc_one.title
26
+ end
27
+
28
+ def test_add_item_to_queue
29
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_one')
30
+ available_disc_queue = user.available_disc_queue
31
+ assert available_disc_queue
32
+ available_disc_queue.add('70071613')
33
+ end
34
+
35
+ def test_add_item_to_queue_top
36
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_one')
37
+ available_disc_queue = user.available_disc_queue
38
+ assert available_disc_queue
39
+ available_disc_queue.add('70071613', 1)
40
+ end
41
+
42
+ def test_remove_item_from_queue_by_index
43
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_one')
44
+ available_disc_queue = user.available_disc_queue
45
+ assert available_disc_queue
46
+ available_disc_queue.remove(2)
47
+ end
48
+
49
+ #def test_add_item_to_stale_queue_fails
50
+ # user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_one')
51
+ # available_disc_queue = user.available_disc_queue
52
+ # assert available_disc_queue
53
+ # available_disc_queue.add('70071613')
54
+ # old_available_disc_queue = available_disc_queue
55
+ #
56
+ # available_disc_queue = user.available_disc_queue
57
+ # available_disc_queue.add('70117306')
58
+ #
59
+ # assert_raises() {
60
+ # old_available_disc_queue.add('70105135')
61
+ # }
62
+ #end
63
+
64
+
65
+ end
@@ -0,0 +1,30 @@
1
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
2
+
3
+ require 'test/unit'
4
+ require 'yaml'
5
+ require 'fakeweb'
6
+ require 'netflix'
7
+
8
+ class Test::Unit::TestCase
9
+ def stub_netflix_for_user(netflix_user_id)
10
+ @netflix_user_responses ||= YAML.load_file(File.expand_path(File.join(File.dirname(__FILE__), "http_fixtures", "netflix_user_responses.yml")))
11
+ @netflix_queue_responses ||= YAML.load_file(File.expand_path(File.join(File.dirname(__FILE__), "http_fixtures", "netflix_queue_responses.yml")))
12
+
13
+ FakeWeb.allow_net_connect = false
14
+
15
+ #override specific REST actions
16
+ #GET user
17
+ FakeWeb.register_uri(:get, "http://api.netflix.com/users/#{netflix_user_id}?output=json",
18
+ :body => @netflix_user_responses[netflix_user_id]['get']['body'])
19
+ #GET disc queue
20
+ FakeWeb.register_uri(:get, %r|http://api\.netflix\.com/users/#{netflix_user_id}/queues/disc.*|,
21
+ :body => @netflix_queue_responses[netflix_user_id]['get']['body'])
22
+ #add to disc queue
23
+ FakeWeb.register_uri(:post, %r|http://api\.netflix\.com/users/#{netflix_user_id}/queues/disc|,
24
+ :body => @netflix_queue_responses[netflix_user_id]['post']['body'])
25
+ #remove from disc queue
26
+ FakeWeb.register_uri(:delete, %r|http://api\.netflix\.com/users/#{netflix_user_id}/queues/disc/available|,
27
+ :body => @netflix_queue_responses[netflix_user_id]['delete']['body'])
28
+
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ def setup
5
+ stub_netflix_for_user('nuid_one')
6
+ Netflix::Client.consumer_key = 'foo_consumer_key'
7
+ Netflix::Client.consumer_secret = 'foo_consumer_secret'
8
+ end
9
+
10
+ def test_user_client
11
+ client = Netflix::Client.new('nuid_access_key', 'nuid_access_secret')
12
+
13
+ end
14
+
15
+ def test_retrieve_user
16
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_one')
17
+ assert_equal "Jane", user.first_name
18
+ assert_equal "Smith", user.last_name
19
+ assert_equal true, user.can_instant_watch
20
+ assert_equal "foobar", user.nickname
21
+ assert_equal "nuid_one", user.user_id
22
+ end
23
+
24
+ def test_retrieve_subaccount
25
+ stub_netflix_for_user('nuid_sub1')
26
+ user = Netflix::Client.new('nuid_access_key', 'nuid_access_secret').user('nuid_sub1')
27
+ assert_equal "John", user.first_name
28
+ assert_equal "Smith", user.last_name
29
+ assert_equal false, user.can_instant_watch
30
+ assert_equal "foobar", user.nickname
31
+ assert_equal "nuid_sub1", user.user_id
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: netflix
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dean Holdren
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-09 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: oauth
16
+ requirement: &2160650860 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2160650860
25
+ - !ruby/object:Gem::Dependency
26
+ name: json
27
+ requirement: &2160649060 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2160649060
36
+ - !ruby/object:Gem::Dependency
37
+ name: launchy
38
+ requirement: &2160647820 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2160647820
47
+ - !ruby/object:Gem::Dependency
48
+ name: fakeweb
49
+ requirement: &2160645840 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2160645840
58
+ - !ruby/object:Gem::Dependency
59
+ name: yaml
60
+ requirement: &2160644720 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2160644720
69
+ description: Ruby Netflix API wrapper
70
+ email: deanholdren@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - LICENSE
76
+ - README.rdoc
77
+ - Rakefile
78
+ - lib/netflix.rb
79
+ - lib/netflix/client.rb
80
+ - lib/netflix/disc.rb
81
+ - lib/netflix/json_resource.rb
82
+ - lib/netflix/queue.rb
83
+ - lib/netflix/user.rb
84
+ - test/http_fixtures/netflix_queue_responses.yml
85
+ - test/http_fixtures/netflix_user_responses.yml
86
+ - test/non_user_client.rb
87
+ - test/queue_test.rb
88
+ - test/test_helper.rb
89
+ - test/user_test.rb
90
+ homepage: https://github.com/dholdren/netflix-ruby
91
+ licenses: []
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 1.8.10
111
+ signing_key:
112
+ specification_version: 3
113
+ summary: Ruby Netflix API wrapper
114
+ test_files:
115
+ - test/http_fixtures/netflix_queue_responses.yml
116
+ - test/http_fixtures/netflix_user_responses.yml
117
+ - test/non_user_client.rb
118
+ - test/queue_test.rb
119
+ - test/test_helper.rb
120
+ - test/user_test.rb