rottentomatoes 1.0.1 → 1.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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rottentomatoes (0.0.1)
4
+ rottentomatoes (1.1.0)
5
5
  deepopenstruct (>= 0.1.2)
6
6
  json
7
7
 
@@ -12,7 +12,7 @@ GEM
12
12
  crack (0.1.8)
13
13
  deepopenstruct (0.1.2)
14
14
  diff-lcs (1.1.2)
15
- json (1.5.1)
15
+ json (1.7.7)
16
16
  rspec (2.0.1)
17
17
  rspec-core (~> 2.0.1)
18
18
  rspec-expectations (~> 2.0.1)
@@ -32,8 +32,6 @@ PLATFORMS
32
32
 
33
33
  DEPENDENCIES
34
34
  bundler (>= 1.0.0)
35
- deepopenstruct (>= 0.1.2)
36
- json
37
35
  rottentomatoes!
38
36
  rspec (~> 2.0.0.beta.22)
39
37
  webmock (>= 1.6.2)
data/README.rdoc CHANGED
@@ -18,7 +18,10 @@ rottentomatoes is an ActiveRecord-style API wrapper for {RottenTomatoes.com}[htt
18
18
  @movie = RottenMovie.find(:title => "Fight Club", :limit => 1)
19
19
  # => <OpenStruct>
20
20
 
21
- @movie.name
21
+ @movie = RottenMovie.find(:imdb => 137523)
22
+ # => <OpenStruct>
23
+
24
+ @movie.title
22
25
  # => "Fight Club"
23
26
 
24
27
  @movie.ratings.critics_score
@@ -42,6 +45,7 @@ Each object provides a find() method which accepts a number of options:
42
45
 
43
46
 
44
47
  [:id] specifies an individual movie via it's RottenTomatoes id
48
+ [:imdb] specifies an individual movie via it's IMDb id
45
49
  [:title] specifies a query string to look for in the movie titles
46
50
  [:limit] specifies the maximum number of results to be returned
47
51
  [:expand_results] The RottenTomatoes API by default returns only partial info for any API method that can return multiple results, or single movie lookups. When :expand_results is set to true rottentomatoes automatically makes extra API calls to fetch the full information for each item, such as the full cast and reviews. This can result in *very* slow requests though. If you need extra information for a search listing then set this to true. Defaults to 'false'. On average the overhead of the extra lookups takes 4x longer to return info.
@@ -67,6 +71,10 @@ Find a single movie by its RottenTomatoes ID:
67
71
 
68
72
  @movie = RottenMovie.find(:id => 13153)
69
73
 
74
+ Find a single movie by its IMDb ID:
75
+
76
+ @movie = RottenMovie.find(:imdb => 137523)
77
+
70
78
  Find a single movie and all associated information
71
79
 
72
80
  @movie = RottenMovie.find(:title => 'Fight Club', :expand_results => true, :limit => 1)
@@ -3,10 +3,10 @@ module RottenTomatoes
3
3
  class RottenMovie
4
4
 
5
5
  def self.find(options)
6
- raise ArgumentError, "You must search by title or id" if (options[:title].nil? && options[:id].nil?)
6
+ raise ArgumentError, "You must search by title, id or imdb id" if (options[:title].nil? && options[:id].nil? && options[:imdb].nil?)
7
7
 
8
8
  results = []
9
- results << Rotten.api_call("movies", options)
9
+ results << Rotten.api_call(options[:imdb].nil? ? "movies" : "movie_alias", options)
10
10
 
11
11
  return Rotten.process_results(results, options)
12
12
  end
@@ -25,7 +25,7 @@ module RottenTomatoes
25
25
 
26
26
  def self.api_call(method, options)
27
27
  raise ArgumentError, "Rotten.api_key must be set before you can use the API" if(@@api_key.nil? || @@api_key.empty?)
28
- raise ArgumentError, "You must specify 'movies', 'lists', or 'direct' as the method" if (method != "movies" && method != "direct" && method != "lists")
28
+ raise ArgumentError, "You must specify 'movies', 'movie_alias', 'lists' or 'direct' as the method" if (method != "movies" && method != "direct" && method != "lists" && method != "movie_alias")
29
29
 
30
30
  url = (method == "direct") ? options : base_api_url + method
31
31
 
@@ -41,7 +41,8 @@ module RottenTomatoes
41
41
  url += ".json" if (url[-5, 5] != ".json")
42
42
  url += "?apikey=" + @@api_key
43
43
  url += "&q=" + CGI::escape(options[:title].to_s) if (method == "movies" && !options[:title].nil? && options[:id].nil?)
44
-
44
+ url += "&type=imdb&id=%07d" % options[:imdb].to_i if (method == "movie_alias")
45
+
45
46
  response = get_url(url)
46
47
  return nil if(response.code.to_i != 200)
47
48
  body = JSON(response.body)
@@ -1,3 +1,3 @@
1
1
  module RottenTomatoes
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -40,16 +40,25 @@ describe RottenMovie do
40
40
  movie.should be_a_kind_of OpenStruct
41
41
  end
42
42
 
43
+ it "should return a single movie when searching by imdb id" do
44
+ movie = RottenMovie.find(:imdb => 137523)
45
+ movie.should be_a_kind_of OpenStruct
46
+ end
47
+
43
48
  it "should return the full movie data when searching by id" do
44
49
  movie = RottenMovie.find(:id => 13153)
45
50
  movie.mpaa_rating.should == "R"
46
51
  end
47
52
 
53
+ it "should return the full movie data when searching by imdb id" do
54
+ movie = RottenMovie.find(:imdb => 137523)
55
+ movie.mpaa_rating.should == "R"
56
+ end
57
+
48
58
  it "should return the full movie data when expand_results set to true and searching by title" do
49
59
  movie = RottenMovie.find(:title => "Fight Club", :limit => 1, :expand_results => true)
50
60
  movie.mpaa_rating.should == "R"
51
- movie.cast.should_not be_nil
52
- movie.reviews.first.should_not be_nil
61
+ movie.abridged_cast.should_not be_nil
53
62
  end
54
63
 
55
64
  it "should show movies found with the same data as equal" do
@@ -36,7 +36,7 @@ describe Rotten do
36
36
  it "should return an array of results when searching by title" do
37
37
  movies = Rotten.api_call("movies", :title => "Fight Club")
38
38
  movies.should be_a_kind_of Array
39
- movies.length.should have_at_least(5).things
39
+ movies.length.should have_at_least(3).things
40
40
  movies.each do |movie|
41
41
  movie.should be_a_kind_of Hash
42
42
  end
metadata CHANGED
@@ -1,113 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rottentomatoes
3
- version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 0
9
- - 1
10
- version: 1.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Nicholas Munson
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-03-29 00:00:00 -04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2013-04-28 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: bundler
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &79008530 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 23
30
- segments:
31
- - 1
32
- - 0
33
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 1.0.0
35
22
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rspec
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *79008530
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &79008110 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
29
+ requirements:
43
30
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 62196431
46
- segments:
47
- - 2
48
- - 0
49
- - 0
50
- - beta
51
- - 22
31
+ - !ruby/object:Gem::Version
52
32
  version: 2.0.0.beta.22
53
33
  type: :development
54
- version_requirements: *id002
55
- - !ruby/object:Gem::Dependency
56
- name: webmock
57
34
  prerelease: false
58
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *79008110
36
+ - !ruby/object:Gem::Dependency
37
+ name: webmock
38
+ requirement: &79007830 !ruby/object:Gem::Requirement
59
39
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 11
64
- segments:
65
- - 1
66
- - 6
67
- - 2
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
68
43
  version: 1.6.2
69
44
  type: :development
70
- version_requirements: *id003
71
- - !ruby/object:Gem::Dependency
72
- name: deepopenstruct
73
45
  prerelease: false
74
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *79007830
47
+ - !ruby/object:Gem::Dependency
48
+ name: deepopenstruct
49
+ requirement: &79007540 !ruby/object:Gem::Requirement
75
50
  none: false
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- hash: 31
80
- segments:
81
- - 0
82
- - 1
83
- - 2
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
84
54
  version: 0.1.2
85
55
  type: :runtime
86
- version_requirements: *id004
87
- - !ruby/object:Gem::Dependency
88
- name: json
89
56
  prerelease: false
90
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *79007540
58
+ - !ruby/object:Gem::Dependency
59
+ name: json
60
+ requirement: &79007270 !ruby/object:Gem::Requirement
91
61
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 3
96
- segments:
97
- - 0
98
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
99
66
  type: :runtime
100
- version_requirements: *id005
67
+ prerelease: false
68
+ version_requirements: *79007270
101
69
  description: An ActiveRecord-style API wrapper for RottenTomatoes.com
102
- email:
70
+ email:
103
71
  - nmunson@gmail.com
104
72
  executables: []
105
-
106
73
  extensions: []
107
-
108
74
  extra_rdoc_files: []
109
-
110
- files:
75
+ files:
111
76
  - .gitignore
112
77
  - Gemfile
113
78
  - Gemfile.lock
@@ -126,41 +91,28 @@ files:
126
91
  - spec/setup/.gitignore
127
92
  - spec/setup/setup_api_key.rb
128
93
  - spec/setup/spec_helper.rb
129
- has_rdoc: true
130
94
  homepage: http://rubygems.org/gems/rottentomatoes
131
95
  licenses: []
132
-
133
96
  post_install_message:
134
97
  rdoc_options: []
135
-
136
- require_paths:
98
+ require_paths:
137
99
  - lib
138
- required_ruby_version: !ruby/object:Gem::Requirement
100
+ required_ruby_version: !ruby/object:Gem::Requirement
139
101
  none: false
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- hash: 3
144
- segments:
145
- - 0
146
- version: "0"
147
- required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
107
  none: false
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- hash: 23
153
- segments:
154
- - 1
155
- - 3
156
- - 6
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
157
111
  version: 1.3.6
158
112
  requirements: []
159
-
160
113
  rubyforge_project: rottentomatoes
161
- rubygems_version: 1.3.7
114
+ rubygems_version: 1.8.5
162
115
  signing_key:
163
116
  specification_version: 3
164
117
  summary: An ActiveRecord-style API wrapper for RottenTomatoes.com
165
118
  test_files: []
166
-