netflix4r 0.0.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.
- data/.document +5 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +28 -0
- data/LICENSE.txt +20 -0
- data/README.md +54 -0
- data/Rakefile +57 -0
- data/VERSION +1 -0
- data/credentials.yml +3 -0
- data/lib/flix4r.rb +29 -0
- data/lib/net_flix/.DS_Store +0 -0
- data/lib/net_flix/api/.DS_Store +0 -0
- data/lib/net_flix/api/catalog/.DS_Store +0 -0
- data/lib/net_flix/api/catalog/titles.rb +22 -0
- data/lib/net_flix/authenticator.rb +74 -0
- data/lib/net_flix/builders/.DS_Store +0 -0
- data/lib/net_flix/builders/actor_builder.rb +29 -0
- data/lib/net_flix/builders/format_builder.rb +33 -0
- data/lib/net_flix/builders/title_builder.rb +66 -0
- data/lib/net_flix/credentials.rb +37 -0
- data/lib/net_flix/request.rb +56 -0
- data/lib/net_flix/title.rb +39 -0
- data/lib/net_flix.rb +28 -0
- data/lib/valuable.rb +82 -0
- data/log/netflix.log +160 -0
- data/netflix4r.gemspec +130 -0
- data/rakefile.rb +11 -0
- data/samples/.DS_Store +0 -0
- data/samples/actors.rb +5 -0
- data/samples/download_full_catalog.rb +7 -0
- data/samples/formats.rb +5 -0
- data/samples/search.rb +16 -0
- data/test/actor_builder_test.rb +35 -0
- data/test/authenticator_test.rb +75 -0
- data/test/credentials_test.rb +27 -0
- data/test/format_builder_test.rb +67 -0
- data/test/helper.rb +18 -0
- data/test/request_test.rb +32 -0
- data/test/test.rb +8 -0
- data/test/test_flix4r.rb +7 -0
- data/test/test_helpers.rb +20 -0
- data/test/tests.rb +3 -0
- data/test/title_builder_test.rb +167 -0
- data/test/title_test.rb +29 -0
- metadata +278 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), 'test.rb')
|
2
|
+
|
3
|
+
class FormatBuilderTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_that_current_formats_are_parsed_from_full_catalog
|
6
|
+
data = title_with_formats
|
7
|
+
formats = FormatBuilder.from_movie(data)
|
8
|
+
assert_included formats, 'current_format'
|
9
|
+
assert_included formats, 'no_availability_format'
|
10
|
+
assert_not_included formats, 'future_format'
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_that_format_links_are_followed
|
14
|
+
|
15
|
+
NetFlix::Request.expects(:new).with(:url => 'http://api.netflix.com/catalog/titles/movies/60031755/format_availability').returns(stub_everything(:send => '<xml/>'))
|
16
|
+
|
17
|
+
FormatBuilder.from_movie( title_with_link_to_formats )
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_that_cast_list_contains_current_formats
|
21
|
+
formats = FormatBuilder.from_xml(delivery_format_list)
|
22
|
+
assert_included formats, 'current_format'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_that_format_list_does_not_contain_future_formats
|
26
|
+
formats = FormatBuilder.from_xml(delivery_format_list)
|
27
|
+
assert_not_included formats, 'future_format'
|
28
|
+
end
|
29
|
+
|
30
|
+
def delivery_format_list
|
31
|
+
%|<delivery_formats>
|
32
|
+
<availability available_from="#{(Time.now - 2.days).to_i}">
|
33
|
+
<category scheme="http://api.netflix.com/categories/title_formats" label="current_format" term="current_format"></category>
|
34
|
+
</availability>
|
35
|
+
<availability available_from="#{(Time.now + 2.days).to_i}">
|
36
|
+
<category scheme="http://api.netflix.com/categories/title_formats" label="future_format" term="future_format"></category>
|
37
|
+
</availability>
|
38
|
+
</delivery_formats
|
39
|
+
|
|
40
|
+
end
|
41
|
+
|
42
|
+
def title_with_link_to_formats
|
43
|
+
xml = '<catalog_title><link href="http://api.netflix.com/catalog/titles/movies/60031755/format_availability" rel="http://schemas.netflix.com/catalog/titles/format_availability" title="formats"></link></catalog_title>'
|
44
|
+
Nokogiri.XML(xml).search('//catalog_title')
|
45
|
+
end
|
46
|
+
|
47
|
+
def title_with_formats
|
48
|
+
|
49
|
+
xml = %|<title_index_item>
|
50
|
+
<delivery_formats>
|
51
|
+
<availability available_from="#{(Time.now + 2.days).to_i}">
|
52
|
+
<category
|
53
|
+
label="future_format" term="future_format"></category>
|
54
|
+
</availability>
|
55
|
+
<availability available_from="#{(Time.now - 2.days).to_i}">
|
56
|
+
<category scheme="http://api.netflix.com/categories/title_formats" label="current_format" term="current_format"></category>
|
57
|
+
</availability>
|
58
|
+
<availability>
|
59
|
+
<category scheme="http://api.netflix.com/categories/title_formats" label="no_availability_format" term="no_availability_format"></category>
|
60
|
+
</availability>
|
61
|
+
</delivery_formats>
|
62
|
+
</title_index_item>
|
63
|
+
|
|
64
|
+
|
65
|
+
Nokogiri.XML(xml).search('//title_index_item')
|
66
|
+
end
|
67
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'flix4r'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), 'test.rb')
|
2
|
+
|
3
|
+
class NetflixTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_that_http_method_is_validated
|
6
|
+
assert_equal false, NetFlix::Request.new(:http_method => 'Thing').valid?
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_that_http_method_knows_valid_values
|
10
|
+
assert_equal true, NetFlix::Request.new(:http_method => 'POST').valid?
|
11
|
+
assert_equal true, NetFlix::Request.new(:http_method => 'GET').valid?
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_that_parameters_appear_alphabetically_in_parameter_string
|
15
|
+
assert_equal 'key_a=value1&key_b=value2', NetFlix::Request.new(:parameters => {'key_b' => 'value2', 'key_a' => 'value1'}).parameter_string
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_that_authenticator_receives_copy_of_request
|
19
|
+
request = NetFlix::Request.new(:parameters => {'key1' => '2'})
|
20
|
+
NetFlix::Authenticator.expects(:new).with(has_entry(:request, request)).returns(stub_everything)
|
21
|
+
Net::HTTP.stubs(:get)
|
22
|
+
|
23
|
+
request.send
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_that_request_is_logged_when_sent
|
27
|
+
request = NetFlix::Request.new(:url => 'some_url', :parameters => {'logme' => 'please'})
|
28
|
+
NetFlix.expects(:log).with('some_url?logme=please')
|
29
|
+
request.log
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
data/test/test.rb
ADDED
data/test/test_flix4r.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Test::Unit::Assertions
|
2
|
+
|
3
|
+
def assert_included(items, needle, custom_message = nil)
|
4
|
+
raise 'First argument for assert_included must be an array' unless items.is_a? Array
|
5
|
+
|
6
|
+
message = build_message custom_message, "Expected #{items.inspect} to contain #{needle.inspect} but it did not."
|
7
|
+
|
8
|
+
assert_block message do
|
9
|
+
items.include? needle
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def assert_not_included(items, needle, custom_message = nil)
|
14
|
+
message = build_message custom_message, "Did not expect #{items.inspect} to contain #{needle.inspect}, but it did."
|
15
|
+
|
16
|
+
assert_block message do
|
17
|
+
not items.include? needle
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/test/tests.rb
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), 'test.rb')
|
2
|
+
|
3
|
+
class TitleBuilderUsingTitleIndexTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_that_id_is_parsed
|
6
|
+
expected = 'http://api.netflix.com/catalog/titles/movies/512381'
|
7
|
+
|
8
|
+
xml = %|<catalog_title_index>
|
9
|
+
<title_index_item>
|
10
|
+
<id>http://api.netflix.com/catalog/titles/movies/512381</id>
|
11
|
+
</title_index_item>
|
12
|
+
</catalog_title_index>
|
13
|
+
|
|
14
|
+
|
15
|
+
actual = TitleBuilder.from_xml(xml).first.id
|
16
|
+
assert_equal expected, actual
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_that_title_is_parsed
|
20
|
+
xml = %|<catalog_title_index>
|
21
|
+
<title_index_item>
|
22
|
+
<title>Foster Home</title>
|
23
|
+
</title_index_item>
|
24
|
+
</catalog_title_index>
|
25
|
+
|
|
26
|
+
|
27
|
+
assert_equal 'Foster Home', TitleBuilder.from_xml(xml).first.title
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_that_web_page_is_parsed
|
31
|
+
xml = %|<catalog_title_index>
|
32
|
+
<title_index_item>
|
33
|
+
<link href="myurl" rel="alternate" title="web page"></link>
|
34
|
+
</title_index_item>
|
35
|
+
</catalog_title_index>
|
36
|
+
|
|
37
|
+
|
38
|
+
assert_equal 'myurl', TitleBuilder.from_xml(xml).first.web_page
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_that_delivery_formats_are_parsed
|
42
|
+
xml = %|<catalog_title_index>
|
43
|
+
<title_index_item>
|
44
|
+
<delivery_formats>
|
45
|
+
<availability>
|
46
|
+
<category scheme="http://api.netflix.com/catalog/titles/formats" label="DVD" term="DVD" status="deprecated"></category>
|
47
|
+
<category scheme="http://api.netflix.com/categories/title_formats" label="DVD" term="DVD"></category>
|
48
|
+
</availability>
|
49
|
+
</delivery_formats>
|
50
|
+
</title_index_item>
|
51
|
+
</catalog_title_index>
|
52
|
+
|
|
53
|
+
|
54
|
+
assert_equal ['DVD'], TitleBuilder.from_xml(xml).first.delivery_formats
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def test_that_genres_are_parsed
|
59
|
+
xml = %|<catalog_title_index>
|
60
|
+
<title_index_item>
|
61
|
+
<category scheme="http://api.netflix.com/categories/genres" label="Romantic Dramas" term="Romantic Dramas"></category>
|
62
|
+
<category scheme="http://api.netflix.com/categories/genres" label="Sci-Fi Dramas" term="Sci-Fi Dramas"></category>
|
63
|
+
</title_index_item>
|
64
|
+
</catalog_title_index>
|
65
|
+
|
|
66
|
+
|
67
|
+
assert_equal ['Romantic Dramas', 'Sci-Fi Dramas'], TitleBuilder.from_xml(xml).first.genres.sort
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_that_actors_are_parsed
|
71
|
+
xml = %|<catalog_title_index>
|
72
|
+
<title_index_item>
|
73
|
+
<link href="http://api.netflix.com/catalog/people/98401" rel="http://schemas.netflix.com/catalog/person.actor" title="George Wendt"></link>
|
74
|
+
<link href="http://api.netflix.com/catalog/people/35954" rel="http://schemas.netflix.com/catalog/person.actor" title="Robert Hy Gorman"></link>
|
75
|
+
</title_index_item>
|
76
|
+
</catalog_title_index>
|
77
|
+
|
|
78
|
+
|
79
|
+
assert_equal ['George Wendt', 'Robert Hy Gorman'], TitleBuilder.from_xml(xml).first.actors.sort
|
80
|
+
end
|
81
|
+
end
|
82
|
+
class TitleBuilderUsingCatalogSearchTest < Test::Unit::TestCase
|
83
|
+
|
84
|
+
def test_that_id_is_parsed
|
85
|
+
expected = 'http://api.netflix.com/catalog/titles/movies/60031755'
|
86
|
+
|
87
|
+
xml = %{<catalog_titles>
|
88
|
+
<catalog_title>
|
89
|
+
<id>http://api.netflix.com/catalog/titles/movies/60031755</id>
|
90
|
+
</catalog_title>
|
91
|
+
</catalog_titles>
|
92
|
+
}
|
93
|
+
|
94
|
+
actual = TitleBuilder.from_xml(xml).first.id
|
95
|
+
assert_equal expected, actual
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_that_release_year_is_parsed
|
99
|
+
xml = '<catalog_titles><catalog_title><release_year>1992</release_year></catalog_title></catalog_titles>'
|
100
|
+
assert_equal '1992', TitleBuilder.from_xml(xml).first.release_year
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_that_title_is_parsed
|
104
|
+
xml = %{<catalog_titles>
|
105
|
+
<catalog_title>
|
106
|
+
<title short="Sneakers" regular="Sneakers"></title>
|
107
|
+
</catalog_title>
|
108
|
+
</catalog_titles>
|
109
|
+
}
|
110
|
+
|
111
|
+
assert_equal 'Sneakers', TitleBuilder.from_xml(xml).first.title
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_that_web_page_is_parsed
|
115
|
+
xml = %{<catalog_titles>
|
116
|
+
<catalog_title>
|
117
|
+
<link href="myurl" rel="alternate" title="web page"></link>
|
118
|
+
</catalog_title>
|
119
|
+
</catalog_titles>
|
120
|
+
}
|
121
|
+
|
122
|
+
assert_equal 'myurl', TitleBuilder.from_xml(xml).first.web_page
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_that_delivery_formats_come_from_format_builder
|
126
|
+
|
127
|
+
FormatBuilder.stubs(:from_movie).returns('results')
|
128
|
+
|
129
|
+
xml = %{
|
130
|
+
<catalog_titles>
|
131
|
+
<catalog_title>
|
132
|
+
<link href="http://api.netflix.com/catalog/titles/movies/60024073/format_availability" rel="http://schemas.netflix.com/catalog/titles/format_availability" title="formats"></link>
|
133
|
+
</catalog_title>
|
134
|
+
</catalog_titles>
|
135
|
+
}
|
136
|
+
|
137
|
+
assert_equal 'results', TitleBuilder.from_xml(xml).first.delivery_formats
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
def test_that_genres_are_parsed
|
142
|
+
xml = %|<catalog_title_index>
|
143
|
+
<title_index_item>
|
144
|
+
<category scheme="http://api.netflix.com/categories/genres" label="Drama" term="Drama"></category>
|
145
|
+
<category scheme="http://api.netflix.com/categories/genres" label="Family Dramas" term="Family Dramas"></category>
|
146
|
+
</title_index_item>
|
147
|
+
</catalog_title_index>
|
148
|
+
|
|
149
|
+
|
150
|
+
assert_equal ['Drama', 'Family Dramas'], TitleBuilder.from_xml(xml).first.genres.sort
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_that_actors_are_parsed
|
154
|
+
|
155
|
+
ActorBuilder.stubs(:from_movie).returns(:actor_list)
|
156
|
+
|
157
|
+
xml = %|<catalog_title_index>
|
158
|
+
<title_index_item>
|
159
|
+
<link href="http://api.netflix.com/catalog/titles/movies/60024073/cast" rel="http://schemas.netflix.com/catalog/people.cast" title="cast"></link>
|
160
|
+
</title_index_item>
|
161
|
+
</catalog_title_index>
|
162
|
+
|
|
163
|
+
|
164
|
+
assert_equal :actor_list, TitleBuilder.from_xml(xml).first.actors
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
data/test/title_test.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), 'test.rb')
|
2
|
+
|
3
|
+
class TitleTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def request_stub
|
6
|
+
stub_everything(:send => '<xml />')
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_that_title_can_go_to_and_from_json
|
10
|
+
expected = NetFlix::Title.new()
|
11
|
+
|
12
|
+
actual = NetFlix::Title.from_json( expected.to_json )
|
13
|
+
|
14
|
+
assert_equal expected.id, actual.id
|
15
|
+
assert_equal expected.delivery_formats, actual.delivery_formats
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_that_search_uses_api_and_builder
|
19
|
+
NetFlix::API::Catalog::Titles.stubs(:search).returns(:xml_results)
|
20
|
+
TitleBuilder.expects(:from_xml).with(:xml_results).returns(:movies)
|
21
|
+
assert_equal :movies, NetFlix::Title.search(:term)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_that_complete_list_call_uses_api
|
25
|
+
NetFlix::API::Catalog::Titles.expects(:index).returns('<xml />')
|
26
|
+
NetFlix::Title.complete_list
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,278 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: netflix4r
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
version: 0.0.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- rossnelson
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-08-07 00:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: activesupport
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
type: :runtime
|
31
|
+
prerelease: false
|
32
|
+
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: ruby-hmac
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
segments:
|
41
|
+
- 0
|
42
|
+
version: "0"
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: json
|
48
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
55
|
+
version: "0"
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *id003
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: nokogiri
|
61
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
segments:
|
67
|
+
- 0
|
68
|
+
version: "0"
|
69
|
+
type: :runtime
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: *id004
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: shoulda
|
74
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
version: "0"
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: *id005
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: bundler
|
87
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ~>
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
segments:
|
93
|
+
- 1
|
94
|
+
- 0
|
95
|
+
- 0
|
96
|
+
version: 1.0.0
|
97
|
+
type: :development
|
98
|
+
prerelease: false
|
99
|
+
version_requirements: *id006
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: jeweler
|
102
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ~>
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
segments:
|
108
|
+
- 1
|
109
|
+
- 5
|
110
|
+
- 2
|
111
|
+
version: 1.5.2
|
112
|
+
type: :development
|
113
|
+
prerelease: false
|
114
|
+
version_requirements: *id007
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: rcov
|
117
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
version: "0"
|
125
|
+
type: :development
|
126
|
+
prerelease: false
|
127
|
+
version_requirements: *id008
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: activesupport
|
130
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
segments:
|
136
|
+
- 0
|
137
|
+
version: "0"
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: *id009
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: ruby-hmac
|
143
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
144
|
+
none: false
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
segments:
|
149
|
+
- 0
|
150
|
+
version: "0"
|
151
|
+
type: :runtime
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: *id010
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: json
|
156
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
157
|
+
none: false
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
segments:
|
162
|
+
- 0
|
163
|
+
version: "0"
|
164
|
+
type: :runtime
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: *id011
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: nokogiri
|
169
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
segments:
|
175
|
+
- 0
|
176
|
+
version: "0"
|
177
|
+
type: :runtime
|
178
|
+
prerelease: false
|
179
|
+
version_requirements: *id012
|
180
|
+
description: a ruby client for the NetFlix API
|
181
|
+
email: axcess1@me.com
|
182
|
+
executables: []
|
183
|
+
|
184
|
+
extensions: []
|
185
|
+
|
186
|
+
extra_rdoc_files:
|
187
|
+
- LICENSE.txt
|
188
|
+
- README.md
|
189
|
+
files:
|
190
|
+
- .document
|
191
|
+
- Gemfile
|
192
|
+
- Gemfile.lock
|
193
|
+
- LICENSE.txt
|
194
|
+
- README.md
|
195
|
+
- Rakefile
|
196
|
+
- VERSION
|
197
|
+
- credentials.yml
|
198
|
+
- lib/flix4r.rb
|
199
|
+
- lib/net_flix.rb
|
200
|
+
- lib/net_flix/.DS_Store
|
201
|
+
- lib/net_flix/api/.DS_Store
|
202
|
+
- lib/net_flix/api/catalog/.DS_Store
|
203
|
+
- lib/net_flix/api/catalog/titles.rb
|
204
|
+
- lib/net_flix/authenticator.rb
|
205
|
+
- lib/net_flix/builders/.DS_Store
|
206
|
+
- lib/net_flix/builders/actor_builder.rb
|
207
|
+
- lib/net_flix/builders/format_builder.rb
|
208
|
+
- lib/net_flix/builders/title_builder.rb
|
209
|
+
- lib/net_flix/credentials.rb
|
210
|
+
- lib/net_flix/request.rb
|
211
|
+
- lib/net_flix/title.rb
|
212
|
+
- lib/valuable.rb
|
213
|
+
- log/netflix.log
|
214
|
+
- netflix4r.gemspec
|
215
|
+
- rakefile.rb
|
216
|
+
- samples/.DS_Store
|
217
|
+
- samples/actors.rb
|
218
|
+
- samples/download_full_catalog.rb
|
219
|
+
- samples/formats.rb
|
220
|
+
- samples/search.rb
|
221
|
+
- test/actor_builder_test.rb
|
222
|
+
- test/authenticator_test.rb
|
223
|
+
- test/credentials_test.rb
|
224
|
+
- test/format_builder_test.rb
|
225
|
+
- test/helper.rb
|
226
|
+
- test/request_test.rb
|
227
|
+
- test/test.rb
|
228
|
+
- test/test_flix4r.rb
|
229
|
+
- test/test_helpers.rb
|
230
|
+
- test/tests.rb
|
231
|
+
- test/title_builder_test.rb
|
232
|
+
- test/title_test.rb
|
233
|
+
has_rdoc: true
|
234
|
+
homepage: http://github.com/rossnelson/flix4r
|
235
|
+
licenses:
|
236
|
+
- MIT
|
237
|
+
post_install_message:
|
238
|
+
rdoc_options: []
|
239
|
+
|
240
|
+
require_paths:
|
241
|
+
- lib
|
242
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
243
|
+
none: false
|
244
|
+
requirements:
|
245
|
+
- - ">="
|
246
|
+
- !ruby/object:Gem::Version
|
247
|
+
hash: -3433800727175703542
|
248
|
+
segments:
|
249
|
+
- 0
|
250
|
+
version: "0"
|
251
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
252
|
+
none: false
|
253
|
+
requirements:
|
254
|
+
- - ">="
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
segments:
|
257
|
+
- 0
|
258
|
+
version: "0"
|
259
|
+
requirements: []
|
260
|
+
|
261
|
+
rubyforge_project:
|
262
|
+
rubygems_version: 1.3.7
|
263
|
+
signing_key:
|
264
|
+
specification_version: 3
|
265
|
+
summary: copy of http://code.google.com/p/flix4r/
|
266
|
+
test_files:
|
267
|
+
- test/actor_builder_test.rb
|
268
|
+
- test/authenticator_test.rb
|
269
|
+
- test/credentials_test.rb
|
270
|
+
- test/format_builder_test.rb
|
271
|
+
- test/helper.rb
|
272
|
+
- test/request_test.rb
|
273
|
+
- test/test.rb
|
274
|
+
- test/test_flix4r.rb
|
275
|
+
- test/test_helpers.rb
|
276
|
+
- test/tests.rb
|
277
|
+
- test/title_builder_test.rb
|
278
|
+
- test/title_test.rb
|