memo_tomato 0.0.2 → 0.0.3

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/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
data/README.md CHANGED
@@ -1,32 +1,32 @@
1
1
  # Memo Tomato #
2
2
 
3
- Memo Tomato is an api wrapper for the http://api.rottentomatoes.com/
4
- The gem is created to fulfil the needs of the project http://watchmemo.com
3
+ This gem is an object-oriented Ruby wrapper for the Rotten Tomatoes API
4
+ http://api.rottentomatoes.com/
5
5
 
6
- ## Installation ##
6
+ [![Build Status](https://secure.travis-ci.org/appsbakery/memo_tomato.png?branch=master)](http://travis-ci.org/appsbakery/memo_tomato)
7
+ [![Dependency Status](https://gemnasium.com/appsbakery/memo_tomato.png?travis)](http://gemnasium.com/appsbakery/memo_tomato)
7
8
 
8
- gem install memo_tomato
9
+ ## Installation
9
10
 
10
- ## How to use it? ##
11
-
12
- First you have to create a client with your api key
13
-
14
- client = MemoTomato::Client.new(:key => "abcd1234")
15
-
16
- You can search tv shows with
11
+ Install the latest stable release:
17
12
 
18
- client.search("NAME OF THE MOVIE")
13
+ [sudo] gem install memo_tomato
19
14
 
20
- Get show info with
15
+ In Rails, add it to your Gemfile:
21
16
 
22
- client.movie_info("THE ID OF THE SHOW")
17
+ ```ruby
18
+ gem 'memo_tomato'
19
+ ```
23
20
 
24
- Get similar movies info with
25
-
26
- client.similar_movies("THE ID OF THE SHOW")
27
-
28
- Get upcoming movies
21
+ ## How to use it? ##
29
22
 
30
- client.upcoming_movies
23
+ First you have to create a client with your api key
31
24
 
25
+ ```ruby
26
+ client = MemoTomato::Client.new(:key => "abcd1234")
32
27
 
28
+ client.search("Star Wars") # Search for movies
29
+ client.movie_info("771271134") # Get movie info
30
+ client.similar_movies("771271134") # Get similar movies
31
+ client.upcoming_movies # Get upcoming movies
32
+ ```
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ desc "Run all examples"
5
+ RSpec::Core::RakeTask.new(:spec) do |t|
6
+ t.rspec_opts = %w[--color]
7
+ end
8
+
9
+ task :default => :spec
@@ -1,15 +1,24 @@
1
1
  module MemoTomato
2
2
  module Parser
3
3
  class Base
4
- def initialize(content)
5
- @content = content
4
+ def initialize(response)
5
+ @response = response
6
6
  end
7
7
 
8
8
  def parse
9
- parse_content @content
9
+ @content = Hashie::Mash.new(MultiJson.decode(@response.body))
10
+ parse_content
11
+ end
12
+
13
+ # This should be implemented in child class
14
+ def parse_content
10
15
  end
11
16
 
12
17
  def parse_entry(movie)
18
+ unless (movie.posters.detailed =~ /poster_default.gif$/).nil?
19
+ movie.posters.detailed = nil
20
+ end
21
+
13
22
  MemoTomato::Movie.new(
14
23
  :id => movie.id,
15
24
  :title => movie.title,
@@ -1,13 +1,9 @@
1
1
  module MemoTomato
2
2
  module Parser
3
3
  class MovieInfo < Base
4
- def parse_content(content)
5
- parsed_response = MultiJson.decode(content.body)
6
- parsed_response = Hashie::Mash.new(parsed_response)
7
-
8
- parse_entry(parsed_response)
4
+ def parse_content
5
+ parse_entry(@content)
9
6
  end
10
-
11
7
  end
12
8
  end
13
9
  end
@@ -1,12 +1,9 @@
1
1
  module MemoTomato
2
2
  module Parser
3
3
  class SearchMovie < Base
4
- def parse_content(content)
5
- parsed_response = MultiJson.decode(content.body)
6
- parsed_response = Hashie::Mash.new(parsed_response)
7
-
4
+ def parse_content
8
5
  # In our case we want the first 30 movies
9
- parsed_response.movies.collect do |movie|
6
+ @content.movies.collect do |movie|
10
7
  parse_entry(movie)
11
8
  end
12
9
  end
@@ -1,11 +1,8 @@
1
1
  module MemoTomato
2
2
  module Parser
3
3
  class SimilarMovies < Base
4
- def parse_content(content)
5
- parsed_response = MultiJson.decode(content.body)
6
- parsed_response = Hashie::Mash.new(parsed_response)
7
-
8
- parsed_response.movies.collect do |movie|
4
+ def parse_content
5
+ @content.movies.collect do |movie|
9
6
  parse_entry(movie)
10
7
  end
11
8
  end
@@ -1,11 +1,8 @@
1
1
  module MemoTomato
2
2
  module Parser
3
3
  class UpcomingMovies < Base
4
- def parse_content(content)
5
- parsed_response = MultiJson.decode(content.body)
6
- parsed_response = Hashie::Mash.new(parsed_response)
7
-
8
- parsed_response.movies.collect do |movie|
4
+ def parse_content
5
+ @content.movies.collect do |movie|
9
6
  parse_entry(movie)
10
7
  end
11
8
  end
@@ -1,3 +1,3 @@
1
1
  module MemoTomato
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/memo_tomato.gemspec CHANGED
@@ -7,9 +7,9 @@ Gem::Specification.new do |s|
7
7
  s.version = MemoTomato::VERSION
8
8
  s.authors = ["Todor Grudev", "Alex Ganov"]
9
9
  s.email = ["tagrudev@gmail.com", "aganov@gmail.com"]
10
- s.homepage = "http://www.appsbakery.eu"
11
- s.summary = %q{Memo Tomato is an api wrapper for the http://api.rottentomatoes.com/ The gem is created to fulfil the needs of the project http://watchmemo.com}
12
- s.description = %q{https://github.com/appsbakery/memo_tomato}
10
+ s.homepage = "http://github.com/appsbakery/memo_tomato"
11
+ s.summary = %q{Ruby wrapper for the Rotten Tomatoes API}
12
+ s.description = %q{An object-oriented Ruby wrapper for the Rotten Tomatoes API http://api.rottentomatoes.com/}
13
13
 
14
14
  s.rubyforge_project = "memo_tomato"
15
15
 
@@ -20,11 +20,12 @@ Gem::Specification.new do |s|
20
20
 
21
21
  # specify any dependencies here; for example:
22
22
  s.add_runtime_dependency "multi_json", "~> 1.0"
23
- s.add_runtime_dependency "httpclient", ">= 2.2.0.2"
24
- s.add_runtime_dependency "hashie", ">= 1.1.0"
25
- s.add_development_dependency "pry", ">= 0.9.8.4"
26
- s.add_development_dependency "rake", ">= 0.8.7"
27
- s.add_development_dependency "rspec", ">= 2"
28
- s.add_development_dependency "webmock", ">= 1.6.2"
29
- s.add_development_dependency "timecop", ">= 0.3.5"
23
+ s.add_runtime_dependency "httpclient", "~> 2.2"
24
+ s.add_runtime_dependency "hashie", "~> 1.1.0"
25
+
26
+
27
+ s.add_development_dependency "pry"
28
+ s.add_development_dependency "rake"
29
+ s.add_development_dependency "rspec", "~> 2.0"
30
+ s.add_development_dependency "webmock", "~> 1.6"
30
31
  end
@@ -10,6 +10,7 @@ describe MemoTomato::Parser::MovieInfo do
10
10
  movie.id.should == 770672122
11
11
  movie.directors.first.name.should == "Lee Unkrich"
12
12
  movie.genres.first.type.should == "Animation"
13
+ movie.image.should == "http://content6.flixster.com/movie/11/13/43/11134356_det.jpg"
13
14
  end
14
15
  end
15
16
 
@@ -19,5 +20,12 @@ describe MemoTomato::Parser::MovieInfo do
19
20
  movie.directors.should == []
20
21
  end
21
22
  end
23
+
24
+ it 'should reject `default_poster.gif` for movie poster' do
25
+ mock_api :get, 'movies/770675547' , 'movies/770675547', :params => client.params do
26
+ movie = client.movie_info("770675547")
27
+ movie.image.should be_nil
28
+ end
29
+ end
22
30
  end
23
31
 
@@ -0,0 +1,49 @@
1
+ {
2
+ "id": 770675547,
3
+ "title": "Moi, Tintin (I, Tintin)",
4
+ "year": 1976,
5
+ "genres": [
6
+ "Documentary",
7
+ "Art House & International"
8
+ ],
9
+ "mpaa_rating": "Unrated",
10
+ "runtime": 87,
11
+ "release_dates": {},
12
+ "ratings": {
13
+ "critics_score": -1,
14
+ "audience_score": 100
15
+ },
16
+ "synopsis": "",
17
+ "posters": {
18
+ "thumbnail": "http://images.rottentomatoescdn.com/images/redesign/poster_default.gif",
19
+ "profile": "http://images.rottentomatoescdn.com/images/redesign/poster_default.gif",
20
+ "detailed": "http://images.rottentomatoescdn.com/images/redesign/poster_default.gif",
21
+ "original": "http://images.rottentomatoescdn.com/images/redesign/poster_default.gif"
22
+ },
23
+ "abridged_cast": [
24
+ {
25
+ "name": "Herge",
26
+ "id": "770674338"
27
+ },
28
+ {
29
+ "name": "Gerard Valet",
30
+ "id": "770680542"
31
+ }
32
+ ],
33
+ "abridged_directors": [
34
+ {
35
+ "name": "Henri Roanne"
36
+ }
37
+ ],
38
+ "alternate_ids": {
39
+ "imdb": "0257927"
40
+ },
41
+ "links": {
42
+ "self": "http://api.rottentomatoes.com/api/public/v1.0/movies/770675547.json",
43
+ "alternate": "http://www.rottentomatoes.com/m/moi-tintin-i-tintin/",
44
+ "cast": "http://api.rottentomatoes.com/api/public/v1.0/movies/770675547/cast.json",
45
+ "clips": "http://api.rottentomatoes.com/api/public/v1.0/movies/770675547/clips.json",
46
+ "reviews": "http://api.rottentomatoes.com/api/public/v1.0/movies/770675547/reviews.json",
47
+ "similar": "http://api.rottentomatoes.com/api/public/v1.0/movies/770675547/similar.json"
48
+ }
49
+ }
data/spec/spec_helper.rb CHANGED
@@ -2,14 +2,13 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
 
4
4
 
5
- require 'rspec'
6
5
  require 'pry'
7
- require 'timecop'
6
+ require 'rspec'
8
7
  require 'memo_tomato'
9
8
  require 'helpers/webmock_helper'
10
9
 
11
10
  RSpec.configure do |config|
12
11
  config.before(:each) do
13
- Timecop.return
12
+ # Do nothing
14
13
  end
15
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memo_tomato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,12 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-14 00:00:00.000000000 +02:00
14
- default_executable:
13
+ date: 2012-06-13 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: multi_json
18
- requirement: &10456680 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
19
18
  none: false
20
19
  requirements:
21
20
  - - ~>
@@ -23,85 +22,109 @@ dependencies:
23
22
  version: '1.0'
24
23
  type: :runtime
25
24
  prerelease: false
26
- version_requirements: *10456680
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '1.0'
27
31
  - !ruby/object:Gem::Dependency
28
32
  name: httpclient
29
- requirement: &10506980 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
30
34
  none: false
31
35
  requirements:
32
- - - ! '>='
36
+ - - ~>
33
37
  - !ruby/object:Gem::Version
34
- version: 2.2.0.2
38
+ version: '2.2'
35
39
  type: :runtime
36
40
  prerelease: false
37
- version_requirements: *10506980
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '2.2'
38
47
  - !ruby/object:Gem::Dependency
39
48
  name: hashie
40
- requirement: &10506520 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
41
50
  none: false
42
51
  requirements:
43
- - - ! '>='
52
+ - - ~>
44
53
  - !ruby/object:Gem::Version
45
54
  version: 1.1.0
46
55
  type: :runtime
47
56
  prerelease: false
48
- version_requirements: *10506520
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 1.1.0
49
63
  - !ruby/object:Gem::Dependency
50
64
  name: pry
51
- requirement: &10506060 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
52
66
  none: false
53
67
  requirements:
54
68
  - - ! '>='
55
69
  - !ruby/object:Gem::Version
56
- version: 0.9.8.4
70
+ version: '0'
57
71
  type: :development
58
72
  prerelease: false
59
- version_requirements: *10506060
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
60
79
  - !ruby/object:Gem::Dependency
61
80
  name: rake
62
- requirement: &10505600 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
63
82
  none: false
64
83
  requirements:
65
84
  - - ! '>='
66
85
  - !ruby/object:Gem::Version
67
- version: 0.8.7
86
+ version: '0'
68
87
  type: :development
69
88
  prerelease: false
70
- version_requirements: *10505600
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
71
95
  - !ruby/object:Gem::Dependency
72
96
  name: rspec
73
- requirement: &10505140 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
74
98
  none: false
75
99
  requirements:
76
- - - ! '>='
100
+ - - ~>
77
101
  - !ruby/object:Gem::Version
78
- version: '2'
102
+ version: '2.0'
79
103
  type: :development
80
104
  prerelease: false
81
- version_requirements: *10505140
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '2.0'
82
111
  - !ruby/object:Gem::Dependency
83
112
  name: webmock
84
- requirement: &10504680 !ruby/object:Gem::Requirement
113
+ requirement: !ruby/object:Gem::Requirement
85
114
  none: false
86
115
  requirements:
87
- - - ! '>='
116
+ - - ~>
88
117
  - !ruby/object:Gem::Version
89
- version: 1.6.2
118
+ version: '1.6'
90
119
  type: :development
91
120
  prerelease: false
92
- version_requirements: *10504680
93
- - !ruby/object:Gem::Dependency
94
- name: timecop
95
- requirement: &10504220 !ruby/object:Gem::Requirement
121
+ version_requirements: !ruby/object:Gem::Requirement
96
122
  none: false
97
123
  requirements:
98
- - - ! '>='
124
+ - - ~>
99
125
  - !ruby/object:Gem::Version
100
- version: 0.3.5
101
- type: :development
102
- prerelease: false
103
- version_requirements: *10504220
104
- description: https://github.com/appsbakery/memo_tomato
126
+ version: '1.6'
127
+ description: An object-oriented Ruby wrapper for the Rotten Tomatoes API http://api.rottentomatoes.com/
105
128
  email:
106
129
  - tagrudev@gmail.com
107
130
  - aganov@gmail.com
@@ -111,6 +134,7 @@ extra_rdoc_files: []
111
134
  files:
112
135
  - .gitignore
113
136
  - .rspec
137
+ - .travis.yml
114
138
  - Gemfile
115
139
  - README.md
116
140
  - Rakefile
@@ -139,10 +163,10 @@ files:
139
163
  - spec/mock_json/movies.json
140
164
  - spec/mock_json/movies/770672122.json
141
165
  - spec/mock_json/movies/770672122/similar.json
166
+ - spec/mock_json/movies/770675547.json
142
167
  - spec/mock_json/movies/770885199.json
143
168
  - spec/spec_helper.rb
144
- has_rdoc: true
145
- homepage: http://www.appsbakery.eu
169
+ homepage: http://github.com/appsbakery/memo_tomato
146
170
  licenses: []
147
171
  post_install_message:
148
172
  rdoc_options: []
@@ -154,17 +178,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
154
178
  - - ! '>='
155
179
  - !ruby/object:Gem::Version
156
180
  version: '0'
181
+ segments:
182
+ - 0
183
+ hash: 208243665
157
184
  required_rubygems_version: !ruby/object:Gem::Requirement
158
185
  none: false
159
186
  requirements:
160
187
  - - ! '>='
161
188
  - !ruby/object:Gem::Version
162
189
  version: '0'
190
+ segments:
191
+ - 0
192
+ hash: 208243665
163
193
  requirements: []
164
194
  rubyforge_project: memo_tomato
165
- rubygems_version: 1.6.2
195
+ rubygems_version: 1.8.24
166
196
  signing_key:
167
197
  specification_version: 3
168
- summary: Memo Tomato is an api wrapper for the http://api.rottentomatoes.com/ The
169
- gem is created to fulfil the needs of the project http://watchmemo.com
198
+ summary: Ruby wrapper for the Rotten Tomatoes API
170
199
  test_files: []