rotten 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ api_key
2
+ vendor/*
3
+ *.gem
4
+ *.bundle
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,26 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rotten (0.1.0)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.1.2)
10
+ fakeweb (1.3.0)
11
+ rspec (2.5.0)
12
+ rspec-core (~> 2.5.0)
13
+ rspec-expectations (~> 2.5.0)
14
+ rspec-mocks (~> 2.5.0)
15
+ rspec-core (2.5.1)
16
+ rspec-expectations (2.5.0)
17
+ diff-lcs (~> 1.1.2)
18
+ rspec-mocks (2.5.0)
19
+
20
+ PLATFORMS
21
+ ruby
22
+
23
+ DEPENDENCIES
24
+ fakeweb
25
+ rotten!
26
+ rspec
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2011 James Cook
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
23
+
@@ -0,0 +1,21 @@
1
+ # Rotten - Parser for the Rotten Tomatoes API
2
+
3
+
4
+ ### Usage
5
+ require "rotten"
6
+ Rotten.api_key = 'your_key'
7
+ movies = Rotten::Movies.search "There will be blood"
8
+
9
+ ### Features
10
+ - Movie search
11
+ - Movies opening this week
12
+ - Movies upcoming
13
+
14
+ #### TODO
15
+ - Implement all APIs
16
+ - More tests
17
+
18
+ #### Copyright
19
+
20
+ Rotten is licensed under the MIT license.
21
+
@@ -0,0 +1,18 @@
1
+ lib = File.expand_path('../', __FILE__)
2
+ $:.unshift lib unless $:.include?(lib)
3
+
4
+ module Rotten
5
+ autoload :Api, "rotten/api"
6
+ autoload :Actor, "rotten/actor"
7
+ autoload :Cast, "rotten/cast"
8
+ autoload :Movie, "rotten/movie"
9
+
10
+ def api_key=(val)
11
+ @api_key = val
12
+ end
13
+
14
+ def api_key
15
+ @api_key
16
+ end
17
+ module_function :api_key=, :api_key
18
+ end
@@ -0,0 +1,8 @@
1
+ module Rotten
2
+ class Actor
3
+ attr_reader :name
4
+ def initialize name
5
+ @name = name
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+ # API behaviors
2
+ # Set your API key with:
3
+ # Rotten.api_key = 'your_key'
4
+ #
5
+ module Rotten
6
+
7
+ module Api
8
+ require "json"
9
+ require "open-uri"
10
+ class UndefinedApiKeyError < StandardError; end
11
+
12
+ def self.included(base)
13
+ base.send :extend, ClassMethods
14
+ end
15
+
16
+ module ClassMethods
17
+
18
+ def endpoint
19
+ "http://api.rottentomatoes.com/api/public/v#{version}"
20
+ end
21
+
22
+ def version
23
+ '1.0'
24
+ end
25
+
26
+ def get path, options={}
27
+ if Rotten.api_key.nil?
28
+ raise UndefinedApiKeyError, "Please define your API key with #{self}.api_key=(your_key)"
29
+ end
30
+
31
+ url = url_for(path, options)
32
+ open( url ) do |response|
33
+ data = JSON.parse(response.read)
34
+ if block_given?
35
+ yield data
36
+ else
37
+ data
38
+ end
39
+ end
40
+ end
41
+
42
+ def url_for(path, options={})
43
+ path.gsub! /\.json\Z/, ''
44
+
45
+ params = ''
46
+ if options.keys.any?
47
+ options.each_pair{|k,v| params << "#{k}=#{URI.escape(v)}&" }
48
+ end
49
+ params.chomp! "&" if params
50
+
51
+ "#{endpoint}/#{path}.json?apikey=#{Rotten.api_key}&#{params}"
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,49 @@
1
+ module Rotten
2
+ class Cast
3
+ require "set"
4
+ include Enumerable
5
+ attr_reader :actors
6
+ def initialize array=[]
7
+ @actors = Set.new
8
+ @characters = []
9
+ process array
10
+ end
11
+
12
+ def inspect
13
+ "<Rotten::Cast actors='#{@actors.map(&:name)}'>"
14
+ end
15
+
16
+ def [] index
17
+ @characters[index]
18
+ end
19
+
20
+ def first; [0]; end
21
+
22
+ def process array
23
+ array.each do |hash|
24
+ actor = @actors.detect{|a| a.name == hash["name"] } || Actor.new(hash["name"])
25
+ @actors << actor
26
+ @characters << [ actor, hash["characters"] ]
27
+ end
28
+ end
29
+
30
+ def each &block
31
+ yield @characters
32
+ end
33
+
34
+ # Check if this cast includes other Cast or Actor
35
+ # @param [Object other] The target to be compared against.
36
+ # @return [Boolean]
37
+ def include?(other)
38
+ if other.is_a?(Cast)
39
+ names = @actors.map(&:name)
40
+ ( names - other.actors.map(&:name) ).empty?
41
+ elsif other.is_a?(Actor)
42
+ @actors.map(&:name).include?( other.name )
43
+ else
44
+ @characters.include?(other)
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,83 @@
1
+ module Rotten
2
+ class Movie
3
+ class InvalidSearchQueryError < StandardError; end
4
+ include Api
5
+
6
+ class << self
7
+ def opening options={}
8
+ fetch "lists/movies/opening", options
9
+ end
10
+
11
+ def upcoming options={}
12
+ fetch "lists/movies/upcoming", options
13
+ end
14
+
15
+ def search phrase, options={}
16
+ options.delete :q
17
+ options[:q] = phrase
18
+
19
+ fetch "movies/search", options
20
+ end
21
+
22
+ def extract_movie_info json={}
23
+ if json.is_a?(Array)
24
+ json.map{|m| extract_movie_info(m) }
25
+ else
26
+ return Movie.new(json)
27
+ end
28
+ end
29
+
30
+ protected
31
+ def fetch path, options, json_start="movies"
32
+ result = get(path, options) do |json|
33
+ extract_movie_info(json[json_start])
34
+ end
35
+ end
36
+ end
37
+
38
+ attr_reader :actors, :cast
39
+ def initialize movie_hash={}
40
+ @actors = []
41
+ process movie_hash
42
+ end
43
+
44
+ def inspect
45
+ "<Rotten::Movie title='#{@title}' id='#{@id}'>"
46
+ end
47
+
48
+ def to_s
49
+ title
50
+ end
51
+
52
+ # Show cast
53
+ #
54
+ # @param [Symbol #kind] Defaults to :abridged, but can accept :full to retrieve full cast info.
55
+ # @return [Rotten::Cast]
56
+ def cast( kind = :abridged )
57
+ if kind == :full
58
+ Movie.get "movies/#{@id}/cast" do |json|
59
+ @cast = Cast.new json["cast"]
60
+ end
61
+ self.cast
62
+ else
63
+ @cast
64
+ end
65
+ end
66
+
67
+ def process hash
68
+ hash.each_pair{|k,v| instance_variable_set("@#{k}", v); self.class.send(:attr_reader, k.to_sym) }
69
+ @cast = Cast.new( @abridged_cast )
70
+ @actors = @cast.actors
71
+ end
72
+
73
+ # Fetch updated, potentially additional movie information
74
+ # @return [Rotten::Movie]
75
+ def reload
76
+ return false unless @id
77
+ Movie.get "movies/#{@id}" do |json|
78
+ process json
79
+ end
80
+ self
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,3 @@
1
+ module Rotten
2
+ VERSION = "0.2.0"
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $:.unshift lib unless $:.include?(lib)
4
+
5
+ require 'rotten/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "rotten"
9
+ s.version = Rotten::VERSION
10
+ s.platform = Gem::Platform::RUBY
11
+ s.authors = ["James Cook"]
12
+ s.email = ["jamecook@gmail.com"]
13
+ s.summary = %q{Wrapper for Rotten Tomatoes API}
14
+ #s.description = %q{}
15
+
16
+ s.required_rubygems_version = ">= 1.4.2"
17
+ s.rubyforge_project = "rotten"
18
+
19
+ s.add_development_dependency "rspec"
20
+ s.add_development_dependency "fakeweb"
21
+
22
+ s.files = `git ls-files`.split("\n")
23
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
+ s.require_paths = ["lib"]
25
+ end
@@ -0,0 +1 @@
1
+ {"cast":[{"id":"162660044","name":"Daniel Day-Lewis","characters":["Daniel Plainview"]},{"id":"303713360","name":"Paul Dano","characters":["Eli Sunday"]},{"id":"351526126","name":"Kevin J. O'Connor","characters":["Henry"]},{"id":"162659596","name":"Ciaran Hinds","characters":["Fletcher"]},{"id":"770920126","name":"Dillon Freasier","characters":["H.W. Plainview"]},{"id":"771047731","name":"Sydney McCallister","characters":["Mary Sunday"]},{"id":"770769759","name":"David Willis","characters":["Abel Sunday"]},{"id":"364621658","name":"David Warshofsky","characters":["H.M. Tilford"]},{"id":"771047732","name":"Colton Woodward","characters":["William Bandy"]},{"id":"771047733","name":"Colleen Foy","characters":["Adult Mary Sunday"]},{"id":"770833789","name":"Russell Harvard","characters":["Adult H.W."]}],"links":{"rel":"http://api.rottentomatoes.com/api/public/v1.0/movies/770671487.json"}}
@@ -0,0 +1 @@
1
+ {"movies":[{"id":"770807411","title":"Scream 4","year":2011,"runtime":103,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":59,"audience_score":78},"synopsis":"In Scream 4, Sidney Prescott, now the author of a self-help book, returns home to Woodsboro on the last stop of her book tour. There she reconnects with Sheriff Dewey and Gale, who are now married, as well as her cousin Jill (played by Emma Roberts) and her Aunt Kate (Mary McDonnell). Unfortunately Sidney's appearance also brings about the return of Ghostface, putting Sidney, Gale, and Dewey, along with Jill, her friends, and the whole town of Woodsboro in danger. The newest installment in the acclaimed franchise that ushered in a new wave of horror in the 1990s is written by series creator Kevin Williamson and directed by suspense master and director of the first trilogy, Wes Craven. The film stars Neve Campbell, Courteney Cox-Arquette, David Arquette, Emma Roberts, Hayden Panettiere, Rory Culkin, Anthony Anderson, Adam Brody, Mary McDonnell, Marley Shelton, Nico Tortorella, Marielle Jaffe, Kristen Bell, Anna Paquin, Lucy Hale, Shanae Grimes, Aimee Teegarden and Brittany Robertson. --(c) Dimension","posters":{"thumbnail":"http://content9.flixster.com/movie/11/15/58/11155803_mob.jpg","profile":"http://content9.flixster.com/movie/11/15/58/11155803_pro.jpg","detailed":"http://content9.flixster.com/movie/11/15/58/11155803_det.jpg","original":"http://content9.flixster.com/movie/11/15/58/11155803_ori.jpg"},"abridged_cast":[{"name":"Neve Campbell","characters":["Sidney Prescott"]},{"name":"David Arquette","characters":["Dewey Riley"]},{"name":"Courteney Cox","characters":["Gale Weathers","Gale Weathers-Riley"]},{"name":"Emma Roberts","characters":["Jill","Jill Roberts"]},{"name":"Hayden Panettiere","characters":["Kirby Reed"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/770807411.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/770807411/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/770807411/reviews.json","alternate":"http://www.rottentomatoes.com/m/scream-4/"}},{"id":"770858015","title":"Rio","year":2011,"runtime":96,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":71,"audience_score":80},"synopsis":"From the makers of the hit ICE AGE series comes RIO, a comedy adventure about taking a walk on the wild side. Blu is a domesticated Macaw who never learned to fly, living a comfortable life with his owner and best friend Linda in the small town of Moose Lake, Minnesota. Blu and Linda think he's the last of his kind, but when they learn about another Macaw who lives in Rio de Janeiro, they head to the faraway and exotic land to find Jewel, Blu's female counterpart. Not long after they arrive, Blu and Jewel are kidnapped by a group of bungling animal smugglers. With the help of street smart Jewel, and a group of wise-cracking and smooth-talking city birds, Blu escapes. Now, with his new friends by his side, Blu will have to find the courage to learn to fly, thwart the kidnappers who are hot on their trail, and return to Linda, the best friend a bird ever had. (c) Fox","posters":{"thumbnail":"http://content9.flixster.com/movie/11/15/67/11156759_mob.jpg","profile":"http://content9.flixster.com/movie/11/15/67/11156759_pro.jpg","detailed":"http://content9.flixster.com/movie/11/15/67/11156759_det.jpg","original":"http://content9.flixster.com/movie/11/15/67/11156759_ori.jpg"},"abridged_cast":[{"name":"Jesse Eisenberg","characters":["Blu"]},{"name":"Anne Hathaway","characters":["Jewel"]},{"name":"will.i.am","characters":["Pedro"]},{"name":"Jamie Foxx","characters":["Nico"]},{"name":"Tracy Morgan","characters":["Luiz"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/770858015.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/770858015/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/770858015/reviews.json","alternate":"http://www.rottentomatoes.com/m/rio/"}},{"id":"771194947","title":"The Conspirator","year":2010,"runtime":122,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":55,"audience_score":79},"synopsis":"Mary Surratt is the lone female charged as a co-conspirator in the assassination trial of Abraham Lincoln. As the whole nation turns against her, she is forced to rely on her reluctant lawyer to uncover the truth and save her life.","posters":{"thumbnail":"http://content8.flixster.com/movie/11/15/57/11155718_mob.jpg","profile":"http://content8.flixster.com/movie/11/15/57/11155718_pro.jpg","detailed":"http://content8.flixster.com/movie/11/15/57/11155718_det.jpg","original":"http://content8.flixster.com/movie/11/15/57/11155718_ori.jpg"},"abridged_cast":[{"name":"Robin Wright Penn","characters":["Mary Surratt"]},{"name":"James McAvoy","characters":["Frederick Aiken"]},{"name":"Tom Wilkinson","characters":["Reverdy Johnson"]},{"name":"Evan Rachel Wood","characters":["Anna Surratt"]},{"name":"Kevin Kline","characters":["Edwin Stanton"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771194947.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771194947/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771194947/reviews.json","alternate":"http://www.rottentomatoes.com/m/the_conspirator/"}},{"id":"771033843","title":"Atlas Shrugged Part I","year":2011,"runtime":97,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":6,"audience_score":86},"synopsis":"Dagny Taggart (Taylor Schilling) runs Taggart Transcontinental, the largest remaining railroad company in America, with intelligence, courage and integrity, despite the systematic disappearance of her best and most competent workers. She is drawn to industrialist Henry Rearden (Grant Bowler), one of the few men whose genius and commitment to his own ideas match her own. Rearden's super-strength metal alloy, Rearden Metal, holds the promise that innovation can overcome the slide into anarchy. Using the untested Rearden Metal, they rebuild the critical Taggart rail line in Colorado and pave the way for oil titan Ellis Wyatt (Graham Beckel) to feed the flame of a new American Renaissance. Hope rises again, when Dagny and Rearden discover the design of a revolutionary motor based on static electricity - in an abandoned engine factory - more proof to the sinister theory that the \"men of the mind\" (thinkers, industrialists, scientists, artists, and other innovators) are \"on strike\" and vanishing from society. -- (C) Official Site","posters":{"thumbnail":"http://content6.flixster.com/movie/11/15/57/11155716_mob.jpg","profile":"http://content6.flixster.com/movie/11/15/57/11155716_pro.jpg","detailed":"http://content6.flixster.com/movie/11/15/57/11155716_det.jpg","original":"http://content6.flixster.com/movie/11/15/57/11155716_ori.jpg"},"abridged_cast":[{"name":"Taylor Schilling","characters":["Dagny Taggart"]},{"name":"Matthew Marsden","characters":["James Taggart"]},{"name":"Grant Bowler","characters":["Henry \"Hank\" Rearden","Henry Reardon"]},{"name":"Edi Gathegi","characters":["Eddie Willers"]},{"name":"Nick Cassavetes","characters":["Richard McNamara"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771033843.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771033843/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771033843/reviews.json","alternate":"http://www.rottentomatoes.com/m/atlas_shrugged_part_i/"}},{"id":"771205000","title":"The Princess Of Montpensier","year":2011,"runtime":139,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":83,"audience_score":60},"synopsis":"France, 1562. Against a background of the savage Catholic/Protestant wars, Marie de Mezieres (Melanie Thierry), a beautiful young aristocrat, and the rakish Henri de Guise (Gaspard Ulliel), fall in love, but Marie's father has promised her hand in marriage to the Prince of Montpensier (Gregoire Leprince-Ringuet). When he is called away to battle, her husband leaves her in the care of Count Chabannes (Lambert Wilson), an aging nobleman with a disdain for warfare. As he experiences his own forbidden desire for Marie, Chabannes must also protect her from the dangerously corrupt court dominated by Catherine de Medici. Director Tavernier translates Madame de Lafayette's 1622 novella into a bracingly intelligent and moving evocation of the terrible conflict between duty and passion. Though the themes are classic, Tavernier, with the cinematographer Bruno de Keyzer's vivid landscapes and Philippe Sarde's pulsing score, makes them feel passionately, urgently contemporary. -- (C) IFC","posters":{"thumbnail":"http://content6.flixster.com/movie/11/15/25/11152584_mob.jpg","profile":"http://content6.flixster.com/movie/11/15/25/11152584_pro.jpg","detailed":"http://content6.flixster.com/movie/11/15/25/11152584_det.jpg","original":"http://content6.flixster.com/movie/11/15/25/11152584_ori.jpg"},"abridged_cast":[{"name":"Melanie Thierry","characters":["Marie de Montpensier"]},{"name":"Gaspard Ulliel","characters":["Henri de Guise"]},{"name":"Lambert Wilson","characters":["Francois de Chabannes"]},{"name":"Gregoire Leprince-Ringuet","characters":["Philippe de Montpensier"]},{"name":"Raphael Personnaz","characters":["Duc d'Anjou"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771205000.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771205000/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771205000/reviews.json","alternate":"http://www.rottentomatoes.com/m/the_princess_of_montpensier/"}},{"id":"771206367","title":"Armadillo","year":2010,"runtime":105,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":88,"audience_score":81},"synopsis":"ARMADILLO is an astute exploration of the culture of war. Director Janus Metz follows Danish soldiers fighting the Taliban in the Helmand province of southern Afghanistan with sophisticated visual artistry rarely achieved under such raw conditions. Building his film around the characters within the platoon, Metz allows us to witness how war transforms the different personalities, and the group, approaching his subjects with an intimacy equal to that of fiction. The active military base \"Armadillo\" houses a mix of 170 Danish and British soldiers in the ISAF (International Security Assistance Force) who are responsible for providing security to the surrounding area and eliminating the Taliban insurgency. Metz follows his subjects through an entire tour of duty, creating an unforgettable portrait of the reality of military life on the front lines. Documenting both the boredom and horror of warfare, Metz shows us the soldiers playing video games and laughing at pornography, struggling to communicate with disillusioned civilians, and killing a group of Taliban soldiers found hiding in a trench. The film avoids judgments for or against the war, and instead shows the soldiers struggling to maintain their humanity in a world filled with violence.-- (c) New Yorker","posters":{"thumbnail":"http://content7.flixster.com/movie/11/15/52/11155245_mob.jpg","profile":"http://content7.flixster.com/movie/11/15/52/11155245_pro.jpg","detailed":"http://content7.flixster.com/movie/11/15/52/11155245_det.jpg","original":"http://content7.flixster.com/movie/11/15/52/11155245_ori.jpg"},"abridged_cast":[{"name":"Ronnie Fridthjof"},{"name":"Sara Stockmann"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771206367.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771206367/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771206367/reviews.json","alternate":"http://www.rottentomatoes.com/m/armadillo_2010/"}},{"id":"771035611","title":"Footprints","year":2010,"runtime":80,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":10,"audience_score":93},"synopsis":"Sybil Temtchine (Ten Benny, Passion of Ayn Rand) stars as a young woman who wakes up at dawn on the handprints and footprints of the famed Chinese Theatre in Hollywood with no idea who she or how she got there. Upon awakening, she wonders if she isn't, in fact, lost in a dream. And perhaps she is. Regardless of whether she is dreaming or wide awake, Our Gal sets off on her journey, from one person to the next, one famous locale after the other. Among the Hollywood fringe denizens with whom she comes into contact are a pair of tour guides (Charley Rossman, John Brickner), two super hero impersonators (Catherine Bruhier, Riley Weston), a Scientology auditor (Joe Roseto), and a memorabilia shop owner (R.J. Cantu). She also finds herself disquietingly followed by a Stranger (Kirk Bovill) who may be real or a figment of her unsteady imagination. Although her feet only fleetingly leave Hollywood Boulevard, by sundown Our Gal will piece together the revelatory truth about her existence and the reason for her awakening, forcing her to make choices that will literally result in either her life... or death. In their heart-breaking portrayals of two veterans of the boulevard and all it represents, FOOTPRINTS marks the return to the big screen of The Searchers' Pippa Scott and H. M. Wynant (The Twilight Zone, Sam Fuller's Run of the Arrow, Budd Boetticher's Decision at Sundown). -- (c) Paladin","posters":{"thumbnail":"http://content8.flixster.com/movie/11/15/61/11156186_mob.jpg","profile":"http://content8.flixster.com/movie/11/15/61/11156186_pro.jpg","detailed":"http://content8.flixster.com/movie/11/15/61/11156186_det.jpg","original":"http://content8.flixster.com/movie/11/15/61/11156186_ori.jpg"},"abridged_cast":[{"name":"Pippa Scott"},{"name":"Sybil Temtchine"},{"name":"Catherine Bruhier"},{"name":"Charley Rossman"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771035611.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771035611/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771035611/reviews.json","alternate":"http://www.rottentomatoes.com/m/footprints/"}},{"id":"770818656","title":"The Double Hour","year":2011,"runtime":102,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":80,"audience_score":54},"synopsis":"Guido (Timi), a former cop, is a luckless veteran of the speed-dating scene in Turin. But, much to his surprise, he meets Slovenian immigrant Sonia (Rappoport), a chambermaid at a high-end hotel. The two hit it off, and a passionate romance develops. After they leave the city for a romantic getaway in the country, things suddenly take a dark turn. As Sonia's murky past resurfaces, her reality starts to crumble. Everything in her life begins to change-questions arise and answers only arrive through a continuous twist and turn of events keeping viewers on edge until the film's final moments. After studying philosophy at the University of Milan, Capotondi started his career as a music video director and photographer. In addition to the Venice Film Festival awards, THE DOUBLE HOUR was selected for the Toronto, Rome, London and Tokyo Film Festivals and was one of the five European Film Award Discovery nominees. Stage and screen actress Ksenia Rappoport was born and raised in St Petersburg where she graduated from the Academy of Theatrical Arts. Besides a prolific stage career, she won the David Di Donatello Award (Italy's Academy Award) for Best Actress for her performance in Giuseppe Tornatore's THE OTHER WOMAN. One of Italy's most acclaimed actors, Filippo Timi is best known to US audiences for his portrayal of Mussolini in Marco Bellochio's VINCERE. -- (C) Samuel Goldwyn","posters":{"thumbnail":"http://content9.flixster.com/movie/11/15/62/11156239_mob.jpg","profile":"http://content9.flixster.com/movie/11/15/62/11156239_pro.jpg","detailed":"http://content9.flixster.com/movie/11/15/62/11156239_det.jpg","original":"http://content9.flixster.com/movie/11/15/62/11156239_ori.jpg"},"abridged_cast":[{"name":"Kseniya Rappoport","characters":["Sonia"]},{"name":"Filippo Timi","characters":["Guido"]},{"name":"Antonia Truppo","characters":["Margherita"]},{"name":"Gaetano Bruno","characters":["Riccardo"]},{"name":"Fausto Russo Alesi","characters":["Bruno"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/770818656.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/770818656/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/770818656/reviews.json","alternate":"http://www.rottentomatoes.com/m/la-doppia-ora/"}},{"id":"771202873","title":"A Screaming Man","year":2011,"runtime":92,"release_dates":{"theater":"2011-04-13"},"ratings":{"critics_score":80,"audience_score":54},"synopsis":"Film Forum is pleased to present the U.S. theatrical premiere of A SCREAMING MAN, written and directed by Mahamat-Saleh Haroun, beginning Wednesday, April 13. Shot in Chad, portraying the psychological fall-out of an endless civil war, A SCREAMING MAN is titled ironically, from a director who credits Ozu as his strongest influence. Adam is a former swimming medalist, now a 60-year-old hotel employee and head \"pool man,\" who maintains this calm oasis as much for his own benefit as for the hotel's Western guests. The tensions between Adam and Abdel, his adult son, are exacerbated when he loses his job to the younger man and their fragile world begins to crumble. Complicating their relationship is the fact that rebel forces are at war with the authorities, and civilians like Adam and Abdel are under pressure to support the government. With subtlety and grace, Haroun's modern fable eschews histrionics for a smart, restrained, yet deeply feeling drama in which personality, politics and place define its characters' reality. A SCREAMING MAN was the winner of the Grand Jury Prize at the 2010 Cannes Film Festival.--(c)Film Movement","posters":{"thumbnail":"http://content7.flixster.com/movie/11/15/65/11156501_mob.jpg","profile":"http://content7.flixster.com/movie/11/15/65/11156501_pro.jpg","detailed":"http://content7.flixster.com/movie/11/15/65/11156501_det.jpg","original":"http://content7.flixster.com/movie/11/15/65/11156501_ori.jpg"},"abridged_cast":[{"name":"Emile Abossolo-M'bo"},{"name":"Dioucounda Koma"},{"name":"Emile Abossolo M'bo"},{"name":"Hadje Fatime N'Goua"},{"name":"Li Heling"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771202873.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771202873/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771202873/reviews.json","alternate":"http://www.rottentomatoes.com/m/a_screaming_man/"}},{"id":"770856724","title":"The First Beautiful Thing","year":2011,"runtime":92,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":86,"audience_score":76},"synopsis":"La Prima Cosa Bella (The First Beautiful Thing) follows a strong and optimistic mother raising her two children against all odds. Throughout grief and pain she teaches her family to remain open and loving and to cherish the little joys in life. This beautiful and touching comedic drama from acclaimed Italian director Paolo Virzi (La Bella Vita) is filled with unforgettable and emotional true-to-life performances. --(c) Palisades Tartan","posters":{"thumbnail":"http://content9.flixster.com/movie/11/15/66/11156635_mob.jpg","profile":"http://content9.flixster.com/movie/11/15/66/11156635_pro.jpg","detailed":"http://content9.flixster.com/movie/11/15/66/11156635_det.jpg","original":"http://content9.flixster.com/movie/11/15/66/11156635_ori.jpg"},"abridged_cast":[],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/770856724.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/770856724/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/770856724/reviews.json","alternate":"http://www.rottentomatoes.com/m/the_first_beautiful_thing/"}},{"id":"770856596","title":"The Imperialists Are Still Alive!","year":2011,"runtime":91,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":83,"audience_score":50},"synopsis":"A successful visual artist working in post-9/11 Manhattan, Asya (Elodie Bouchez) lives the life of the hip and glamorous, replete with exclusive art parties, supermodels, and stretch limousines while she carefully follows the situation in the Middle East on television. Asya learns that her childhood friend, Faisal, has disappeared-the victim of a purported CIA abduction. That same night, she meets Javier (Jose Maria de Tavira), a sexy Mexican PhD student, and romance blossoms. Javier finds Asya's conspiracy theories overly paranoid-but nothing in Asya's world is as it seems. Asya's life is reflective of the themes of cultural fusion, and the complications and humor that arise simultaneously out of everyday life. Zeina Durra's atmospheric debut feature, which premiered at the 2010 Sundance Film Festival is an alluring and intelligent look at the way the war on terror seeps into the texture of everyday American life. Gorgeous 16 mm grain imbues the film with an anachronistic feel that interestingly evokes times past. THE IMPERIALISTS ARE STILL ALIVE! is an exceptional work heralding the arrival of Durra as an exciting new directorial talent. -- (C) IFC Films","posters":{"thumbnail":"http://content9.flixster.com/movie/11/15/66/11156611_mob.jpg","profile":"http://content9.flixster.com/movie/11/15/66/11156611_pro.jpg","detailed":"http://content9.flixster.com/movie/11/15/66/11156611_det.jpg","original":"http://content9.flixster.com/movie/11/15/66/11156611_ori.jpg"},"abridged_cast":[{"name":"Elodie Bouchez","characters":["Asya","Aysa"]},{"name":"Jose Maria de Tavira","characters":["Javier"]},{"name":"Karim Saleh","characters":["Karim"]},{"name":"Rita Ackerman","characters":["Libby"]},{"name":"Marianna Kulukundis","characters":["Athena"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/770856596.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/770856596/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/770856596/reviews.json","alternate":"http://www.rottentomatoes.com/m/the-imperialists-are-still-alive/"}},{"id":"771231860","title":"Fly Away","year":2011,"runtime":85,"release_dates":{"theater":"2011-04-15","dvd":"2011-04-26"},"ratings":{"critics_score":88,"audience_score":0},"synopsis":"Based on the award-winning short Flying Lessons, Fly Away tells the moving story of a single mother, Jeanne, grappling with the challenge of raising her autistic teenage daughter, Mandy. As Mandy becomes more and more unmanageable, so too does Jeanne&#700;s life. Over the period of two weeks, Jeanne is confronted with the most difficult decision a parent can make: to let go, allowing her child to grow, but also grow apart, or to hold on tight and fall together. --(c) Official Site","posters":{"thumbnail":"http://content6.flixster.com/movie/11/15/67/11156776_mob.jpg","profile":"http://content6.flixster.com/movie/11/15/67/11156776_pro.jpg","detailed":"http://content6.flixster.com/movie/11/15/67/11156776_det.jpg","original":"http://content6.flixster.com/movie/11/15/67/11156776_ori.jpg"},"abridged_cast":[{"name":"JR Bourne"},{"name":"Beth Broderick"},{"name":"Greg Germann"},{"name":"Elaine Hall"},{"name":"Zachariah Palmer"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771231860.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771231860/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771231860/reviews.json","alternate":"http://www.rottentomatoes.com/m/fly_away_2011/"}},{"id":"771232696","title":"Square Grouper: The Godfathers of Ganja","year":2011,"runtime":99,"release_dates":{"theater":"2011-04-15","dvd":"2011-04-19"},"ratings":{"critics_score":50,"audience_score":100},"synopsis":"In 1979, the U.S. Customs Service reported that 87% of all marijuana seizures in the U.S. were made in the South Florida area. Due to the region's 5,000 miles of coast and coastal waterways and close proximity to the Caribbean and Latin America, South Florida was a pot smuggler's paradise. In sharp contrast to the brazenly violent cocaine cowboys of the 1980s, Miami's marijuana smugglers were cooler, calmer, and for the most part, nonviolent. Square Grouper paints a vivid portrait of Miami's pot smuggling culture in the 1970s and 1980s through three of the city's most colorful stories.--(c) Official Site","posters":{"thumbnail":"http://content6.flixster.com/movie/11/15/64/11156488_mob.jpg","profile":"http://content6.flixster.com/movie/11/15/64/11156488_pro.jpg","detailed":"http://content6.flixster.com/movie/11/15/64/11156488_det.jpg","original":"http://content6.flixster.com/movie/11/15/64/11156488_ori.jpg"},"abridged_cast":[{"name":"Brother Clifton"},{"name":"Brother Gary"},{"name":"Sister Ilene"},{"name":"Brother Butch"},{"name":"Tony Darwin"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771232696.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771232696/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771232696/reviews.json","alternate":"http://www.rottentomatoes.com/m/square_grouper_the_godfathers_of_ganja/"}},{"id":"771207037","title":"Bag It","year":2011,"runtime":74,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":-1,"audience_score":0},"synopsis":"Bag It will be airing on National Public Television beginning in April 2011. Please click here to check with your local public television affiliate for air dates and showtimes. Please tune in here for our national webcast event this Earth Week for an interactive Q&A webcast at 9:15 pm EDT on Thursday, April 21. The webcast will feature Bag It director Suzan Beraza, film star Jeb Berrier and special guests!--(c) Official Site","posters":{"thumbnail":"http://content6.flixster.com/movie/11/15/68/11156872_mob.jpg","profile":"http://content6.flixster.com/movie/11/15/68/11156872_pro.jpg","detailed":"http://content6.flixster.com/movie/11/15/68/11156872_det.jpg","original":"http://content6.flixster.com/movie/11/15/68/11156872_ori.jpg"},"abridged_cast":[{"name":"Jeb Berrier"},{"name":"David Chameides"},{"name":"Anne Reeser"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771207037.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771207037/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771207037/reviews.json","alternate":"http://www.rottentomatoes.com/m/bag_it/"}},{"id":"771198397","title":"Phillip The Fossil","year":2011,"runtime":73,"release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":-1,"audience_score":0},"synopsis":"Set in small-town New England, Phillip The Fossil follows an aging party animal chasing the now extinct glory days of his youth. Blowing lines with kids half his age, making it rain in strip clubs, and voraciously pawing naive girls with \"JUICY\" tagged across their rears are all part of Phillip's relentless pursuit of the endless summer. He chuckles along as the carefree town jester, but beneath this suffocating guise Phillip feels increasingly isolated in the dead end rut he has so comfortably dug. The chance to pull himself out comes when an old love returns home and the opportunity to run his own landscaping business knocks. But before Phillip can dust himself off he must first ditch the woefully insecure seventeen year-old that's been his shadow for the last month. With her jealous, steroid-pumping ex in his grill and a best friend returning from Iraq with an acutely hostile form of PTSD, it isn't long before Phillip gets tangled in a tornado of violence that may tarnish his future forever. Filmed in a brutal, stripped-down fashion, Phillip The Fossil is an uncompromising and realistic portrait of everyday people who struggle in all their blemished glory for a life of balance, control and meaning. --(c) Official Site","posters":{"thumbnail":"http://content7.flixster.com/movie/11/15/68/11156849_mob.jpg","profile":"http://content7.flixster.com/movie/11/15/68/11156849_pro.jpg","detailed":"http://content7.flixster.com/movie/11/15/68/11156849_det.jpg","original":"http://content7.flixster.com/movie/11/15/68/11156849_ori.jpg"},"abridged_cast":[{"name":"Brian Hasenfus"},{"name":"Nick Dellarocca"},{"name":"Ann Palica"},{"name":"Angela Pagliarulo"},{"name":"J.R. Killigrew"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771198397.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771198397/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771198397/reviews.json","alternate":"http://www.rottentomatoes.com/m/phillip_the_fossil/"}},{"id":"771233387","title":"The Frontier Boys","year":2011,"runtime":"","release_dates":{"theater":"2011-04-15"},"ratings":{"critics_score":-1,"audience_score":80},"synopsis":"The story of four high school boys whose undefeated basketball season and friendship are threatened after a drive-by shooting leaves one of them in a coma and one of them with a secret. Brent Fencett, Jed Bracken, and T.J. Lewis are star players on the Charlevoix High School Basketball team; Jackson Carlson is their most obnoxious fan. They are unbeaten on the court and inseparable off it - until Brent gets caught up in his older brother's mixed up life. The consequences of Brent's choice leave T.J. in the hospital, and Brent's soul in turmoil.","posters":{"thumbnail":"http://content9.flixster.com/movie/11/15/68/11156879_mob.jpg","profile":"http://content9.flixster.com/movie/11/15/68/11156879_pro.jpg","detailed":"http://content9.flixster.com/movie/11/15/68/11156879_det.jpg","original":"http://content9.flixster.com/movie/11/15/68/11156879_ori.jpg"},"abridged_cast":[{"name":"Rebecca St. James"},{"name":"Big Kenny Alphin"},{"name":"Earthquake Kelley"},{"name":"Timothy Lofing"},{"name":"Jedidiah Grooters"}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771233387.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771233387/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771233387/reviews.json","alternate":"http://www.rottentomatoes.com/m/the_frontier_boys/"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/lists/movies/opening.json?limit=16&country=us","alternate":"http://www.rottentomatoes.com/movie/opening.php"},"link_template":"http://api.rottentomatoes.com/api/public/v1.0/lists/movies/opening.json?limit={num_results}&country={country-code}"}
@@ -0,0 +1 @@
1
+ {"total":1,"movies":[{"id":"770671487","title":"There Will Be Blood","year":2007,"runtime":158,"release_dates":{"theater":"2007-12-26","dvd":"2008-04-08"},"ratings":{"critics_score":91,"audience_score":84},"synopsis":"","posters":{"thumbnail":"http://content6.flixster.com/movie/10/88/49/10884912_mob.jpg","profile":"http://content6.flixster.com/movie/10/88/49/10884912_pro.jpg","detailed":"http://content6.flixster.com/movie/10/88/49/10884912_det.jpg","original":"http://content6.flixster.com/movie/10/88/49/10884912_ori.jpg"},"abridged_cast":[{"name":"Daniel Day-Lewis","characters":["Daniel Plainview"]},{"name":"Paul Dano","characters":["Eli Sunday"]},{"name":"Kevin J. O'Connor","characters":["Henry"]},{"name":"Ciaran Hinds","characters":["Fletcher"]},{"name":"Dillon Freasier","characters":["H.W. Plainview"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/770671487.json","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/770671487/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/770671487/reviews.json","alternate":"http://www.rottentomatoes.com/m/there_will_be_blood/"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=There Will Be Blood&page_limit=30&page=1"},"link_template":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q={search-term}&page_limit={results-per-page}&page={page-number}"}
@@ -0,0 +1,62 @@
1
+ require "spec_helper"
2
+
3
+ describe Rotten::Movie do
4
+ context "#cast" do
5
+ before :each do
6
+ simulate_movie_search
7
+ @movie = Rotten::Movie.search("There Will Be Blood").pop
8
+ simulate_full_cast(@movie)
9
+ end
10
+
11
+ context "sent :full" do
12
+ it "should return an array" do
13
+ @movie.cast(:full).should be_an_instance_of(Rotten::Cast)
14
+ @movie.cast(:full).should include(@movie.cast(:abridged))
15
+ end
16
+ end
17
+ end
18
+
19
+ context ".opening" do
20
+ before :each do
21
+ simulate_movie_openings
22
+ end
23
+
24
+ it "should return an array" do
25
+ Rotten::Movie.opening.should be_an_instance_of(Array)
26
+ end
27
+
28
+ it "should contain a movie" do
29
+ Rotten::Movie.opening.first.should be_an_instance_of(Rotten::Movie)
30
+ end
31
+
32
+ it "should contain actors in each movie" do
33
+ Rotten::Movie.opening.first.actors.first.should be_an_instance_of(Rotten::Actor)
34
+ end
35
+
36
+ it "should contain casts" do
37
+ Rotten::Movie.opening.first.cast.should be_an_instance_of(Rotten::Cast)
38
+ end
39
+ end
40
+
41
+ context ".search" do
42
+ before :each do
43
+ simulate_movie_search
44
+ end
45
+
46
+ it "should return an array" do
47
+ Rotten::Movie.search("There Will Be Blood").should be_an_instance_of(Array)
48
+ end
49
+
50
+ it "should contain a movie" do
51
+ Rotten::Movie.search("There Will Be Blood").first.should be_an_instance_of(Rotten::Movie)
52
+ end
53
+ end
54
+
55
+ context "when api_key is undefined" do
56
+ it "should raise error" do
57
+ simulate_movie_openings
58
+ Rotten.api_key = nil
59
+ lambda{ Rotten::Movie.opening }.should raise_error(Rotten::Api::UndefinedApiKeyError)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,33 @@
1
+ lib = File.expand_path('../../', __FILE__)
2
+ $:.unshift lib unless $:.include?(lib)
3
+
4
+ require "rotten"
5
+ require "fakeweb"
6
+
7
+ RSpec.configure do |config|
8
+ def fixture_path
9
+ File.join( File.dirname(__FILE__), "fixtures" )
10
+ end
11
+
12
+ def simulate_movie_openings
13
+ FakeWeb.register_uri(:get, Rotten::Movie.url_for("lists/movies/opening"),
14
+ :body => File.read( File.join(fixture_path, "movie_openings.json") ))
15
+ end
16
+
17
+ def simulate_movie_search
18
+ FakeWeb.register_uri(:get, Rotten::Movie.url_for("movies/search", :q => "There Will Be Blood"),
19
+ :body => File.read( File.join(fixture_path, "search.json") ))
20
+ end
21
+
22
+ def simulate_full_cast(movie)
23
+ FakeWeb.register_uri(:get, Rotten::Movie.url_for("movies/#{movie.id}/cast"),
24
+ :body => File.read( File.join(fixture_path, "cast.json") ))
25
+ end
26
+
27
+
28
+ config.before(:each) do
29
+ Rotten.api_key = "1234567890"
30
+ end
31
+ end
32
+ FakeWeb.allow_net_connect = false
33
+
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 0.1.0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - James Cook
@@ -52,8 +52,24 @@ extensions: []
52
52
 
53
53
  extra_rdoc_files: []
54
54
 
55
- files: []
56
-
55
+ files:
56
+ - .gitignore
57
+ - Gemfile
58
+ - Gemfile.lock
59
+ - LICENSE
60
+ - README.md
61
+ - lib/rotten.rb
62
+ - lib/rotten/actor.rb
63
+ - lib/rotten/api.rb
64
+ - lib/rotten/cast.rb
65
+ - lib/rotten/movie.rb
66
+ - lib/rotten/version.rb
67
+ - rotten.gemspec
68
+ - spec/fixtures/cast.json
69
+ - spec/fixtures/movie_openings.json
70
+ - spec/fixtures/search.json
71
+ - spec/movie_spec.rb
72
+ - spec/spec_helper.rb
57
73
  has_rdoc: true
58
74
  homepage:
59
75
  licenses: []
@@ -88,5 +104,9 @@ rubygems_version: 1.3.7
88
104
  signing_key:
89
105
  specification_version: 3
90
106
  summary: Wrapper for Rotten Tomatoes API
91
- test_files: []
92
-
107
+ test_files:
108
+ - spec/fixtures/cast.json
109
+ - spec/fixtures/movie_openings.json
110
+ - spec/fixtures/search.json
111
+ - spec/movie_spec.rb
112
+ - spec/spec_helper.rb