ratr 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/Gemfile.lock +26 -1
- data/README.md +96 -27
- data/Rakefile +1 -0
- data/bin/ratr +2 -109
- data/examples/movies_small.csv +0 -20
- data/lib/ratr.rb +12 -0
- data/lib/ratr/application.rb +58 -0
- data/lib/ratr/meta_rating.rb +26 -0
- data/lib/ratr/omdb_http_wrapper.rb +36 -0
- data/lib/ratr/parallel_http_processor.rb +19 -0
- data/lib/ratr/pool_manager.rb +22 -0
- data/lib/ratr/rotten_tomatoes_http_wrapper.rb +72 -0
- data/lib/ratr/serial_http_processor.rb +10 -0
- data/lib/ratr/source.rb +20 -0
- data/lib/ratr/utils/array_of_hashes.rb +9 -0
- data/lib/ratr/utils/average_calculator.rb +12 -0
- data/lib/ratr/version.rb +1 -1
- data/ratr.gemspec +5 -1
- data/spec/application_spec.rb +18 -0
- data/spec/array_of_hashes_spec.rb +34 -0
- data/spec/average_calculator_spec.rb +22 -0
- data/spec/meta_rating_spec.rb +26 -0
- data/spec/source_spec.rb +35 -0
- data/spec/spec_helper.rb +25 -0
- data/spec/vcr/Ratr_Application/_call/returns_an_array_of_movies_scored_high_to_low_from_the_provided_CSV.yml +671 -0
- data/spec/vcr/Ratr_Source/omdb_source/_fetch/returns_scores_for_each_movie_provided.yml +96 -0
- data/spec/vcr/Ratr_Source/rotten_tomatoes_source/_fetch/returns_scores_for_each_movie_provided.yml +173 -0
- metadata +67 -3
- data/ratr-0.1.1.gem +0 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
module Ratr
|
2
|
+
class OmdbHttpWrapper
|
3
|
+
INVALID_VALUES = ['N/A']
|
4
|
+
|
5
|
+
attr_reader :url
|
6
|
+
def initialize(options = {})
|
7
|
+
@url = options.fetch(:url, 'http://www.omdbapi.com')
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(movie)
|
11
|
+
adapter.get do |request|
|
12
|
+
request.url '/'
|
13
|
+
request.params['t'] = movie.title
|
14
|
+
request.params['y'] = movie.year
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def scrub(responses)
|
19
|
+
responses.reduce({}) do |memo, (index, response)|
|
20
|
+
rating = response.body['imdbRating']
|
21
|
+
memo[index] = []
|
22
|
+
memo[index].push(rating.to_f) if rating && !INVALID_VALUES.include?(rating)
|
23
|
+
|
24
|
+
memo
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def adapter
|
29
|
+
@adapter ||= Faraday.new(url: url) do |faraday|
|
30
|
+
faraday.request :json
|
31
|
+
faraday.response :json
|
32
|
+
faraday.adapter :typhoeus
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Ratr
|
2
|
+
class ParallelHttpProcessor
|
3
|
+
attr_reader :concurrency, :http_adapter
|
4
|
+
def initialize(options={})
|
5
|
+
@concurrency = options.fetch(:concurrency, 2)
|
6
|
+
@http_adapter = options[:http_adapter]
|
7
|
+
end
|
8
|
+
|
9
|
+
def process(&block)
|
10
|
+
http_adapter.in_parallel(parallel_manager) do
|
11
|
+
block.call
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def parallel_manager
|
16
|
+
@parallel_manager ||= Typhoeus::Hydra.new(max_concurrency: concurrency)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Ratr
|
2
|
+
class PoolManager
|
3
|
+
attr_reader :sources, :results, :threads
|
4
|
+
def initialize(sources)
|
5
|
+
@sources, @results, @threads = sources, [], []
|
6
|
+
end
|
7
|
+
|
8
|
+
def process(movies)
|
9
|
+
sources.each do |source|
|
10
|
+
threads << Thread.new { results << source.fetch(movies) }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def merged_results
|
15
|
+
@merged_results ||= Ratr::ArrayOfHashes.merge(results)
|
16
|
+
end
|
17
|
+
|
18
|
+
def join
|
19
|
+
threads.each(&:join)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module Ratr
|
2
|
+
class RottenTomatoesHttpWrapper
|
3
|
+
INVALID_VALUES = [-1]
|
4
|
+
SCALAR = 10.0
|
5
|
+
|
6
|
+
attr_reader :url, :apikey
|
7
|
+
def initialize(options = {})
|
8
|
+
@apikey = options.fetch(:apikey, "ww8qgxbhjbqudvupbr8sqd7x")
|
9
|
+
@url = options.fetch(:url, 'http://api.rottentomatoes.com')
|
10
|
+
end
|
11
|
+
|
12
|
+
# RT is really the problem child when it comes to requesting
|
13
|
+
# multiple searches at once. It will return a 403 (forbidden)
|
14
|
+
# code on rate limit exceeded which is a pain in the bum.
|
15
|
+
#
|
16
|
+
# Faraday has ERR::Timeout retries built in, but this is
|
17
|
+
# unfortunatley not able to tap into it. The best I can do
|
18
|
+
# is to roll my own custom retry mechanism. The idea is
|
19
|
+
# to try and retry sooner than the 0.02 under most circumstances.
|
20
|
+
def get(movie)
|
21
|
+
retry_count = 3
|
22
|
+
begin
|
23
|
+
adapter.get do |request|
|
24
|
+
request.url '/api/public/v1.0/movies.json'
|
25
|
+
request.params['q'] = "#{movie.title} #{movie.year}"
|
26
|
+
request.params['apikey'] = apikey
|
27
|
+
request.params['page_limit'] = 1
|
28
|
+
end
|
29
|
+
rescue Faraday::Error::ClientError
|
30
|
+
case retry_count
|
31
|
+
when 3
|
32
|
+
sleep 0.05
|
33
|
+
when 2
|
34
|
+
sleep 0.1
|
35
|
+
when 1
|
36
|
+
sleep 0.2
|
37
|
+
end
|
38
|
+
retry_count -=1
|
39
|
+
|
40
|
+
retry if retry_count > 0
|
41
|
+
OpenStruct.new(body: {"movies" => []})
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def scrub(responses)
|
46
|
+
responses.reduce({}) do |memo, (index, response)|
|
47
|
+
movie = response.body["movies"][0]
|
48
|
+
memo[index] = []
|
49
|
+
|
50
|
+
if movie
|
51
|
+
ratings = movie["ratings"]
|
52
|
+
critic = ratings["critics_score"]
|
53
|
+
audience = ratings["audience_score"]
|
54
|
+
|
55
|
+
memo[index].push(audience.to_f / SCALAR) if audience && !INVALID_VALUES.include?(audience)
|
56
|
+
memo[index].push(critic.to_f / SCALAR) if critic && !INVALID_VALUES.include?(critic)
|
57
|
+
end
|
58
|
+
|
59
|
+
memo
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def adapter
|
64
|
+
@adapter ||= Faraday.new(url: url) do |faraday|
|
65
|
+
faraday.request :json
|
66
|
+
faraday.response :json
|
67
|
+
faraday.response :raise_error
|
68
|
+
faraday.adapter :typhoeus
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/ratr/source.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Ratr
|
2
|
+
class Source
|
3
|
+
attr_reader :processor, :wrapper
|
4
|
+
def initialize(processor, wrapper)
|
5
|
+
@wrapper = wrapper
|
6
|
+
@processor = processor.new(http_adapter: @wrapper.adapter)
|
7
|
+
end
|
8
|
+
|
9
|
+
def fetch(movies)
|
10
|
+
responses = {}
|
11
|
+
|
12
|
+
processor.process do
|
13
|
+
movies.each do |index, movie|
|
14
|
+
responses[index] = wrapper.get(movie)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
wrapper.scrub(responses)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/ratr/version.rb
CHANGED
data/ratr.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.homepage = "https://github.com/patricksrobertson/ratr"
|
10
10
|
gem.license = "MIT"
|
11
11
|
|
12
|
-
gem.executables =
|
12
|
+
gem.executables = ["ratr"]
|
13
13
|
gem.files = `git ls-files`.split("\n")
|
14
14
|
gem.name = "ratr"
|
15
15
|
gem.require_paths = ["lib"]
|
@@ -18,4 +18,8 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.add_dependency 'faraday', '~> 0.9'
|
19
19
|
gem.add_dependency 'faraday_middleware', '~> 0.9'
|
20
20
|
gem.add_dependency 'typhoeus', '~> 0.7'
|
21
|
+
|
22
|
+
gem.add_development_dependency 'rspec', '~> 3.1'
|
23
|
+
gem.add_development_dependency 'vcr', '~> 2.9'
|
24
|
+
gem.add_development_dependency 'webmock', '~> 1.11'
|
21
25
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'ratr'
|
2
|
+
|
3
|
+
describe Ratr::Application do
|
4
|
+
let(:application) { Ratr::Application.new }
|
5
|
+
let(:expected_result) do
|
6
|
+
["20 Feet from Stardom (2013): 9.1",
|
7
|
+
"7th Heaven (1927): 8.9",
|
8
|
+
"12 Years a Slave (2013): 8.9",
|
9
|
+
"7 Faces of Dr. Lao (1964): 8.4",
|
10
|
+
"8 Mile (2002): 6.6"]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#call', :vcr do
|
14
|
+
it 'returns an array of movies scored high to low from the provided CSV' do
|
15
|
+
expect(application.call).to eq(expected_result)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'ratr'
|
2
|
+
|
3
|
+
describe Ratr::ArrayOfHashes do
|
4
|
+
describe '.merge' do
|
5
|
+
let(:merge) { Ratr::ArrayOfHashes.merge(array) }
|
6
|
+
|
7
|
+
context 'singular hash' do
|
8
|
+
let(:array) { [{"a" => [1], "b" => [2]}] }
|
9
|
+
|
10
|
+
it 'returns the hash' do
|
11
|
+
expect(merge).to eq array[0]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'two hashes' do
|
16
|
+
let(:array) {[{"a" => [1], "b" => [2]}, {"a" => [2], "b" => [1]}] }
|
17
|
+
|
18
|
+
it 'merges them like a normal merge' do
|
19
|
+
expected_result = {"a" => [1,2], "b" => [2,1]}
|
20
|
+
|
21
|
+
expect(merge).to eq expected_result
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'three hashes (n hashes really)' do
|
26
|
+
let(:array) {[{"a" => [1], "b" =>[3]}, {"a" => [2], "b" =>[2]}, {"a" =>[3], "b"=>[1]}] }
|
27
|
+
it 'merges them just like two hashes, but with #reduce' do
|
28
|
+
expected_result = {"a" => [1,2,3], "b" => [3,2,1]}
|
29
|
+
|
30
|
+
expect(merge).to eq expected_result
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'ratr'
|
2
|
+
|
3
|
+
describe Ratr::AverageCalculator do
|
4
|
+
describe '.call' do
|
5
|
+
let(:calculator) { Ratr::AverageCalculator.call(scores) }
|
6
|
+
|
7
|
+
context 'empty scores array passed in' do
|
8
|
+
let(:scores) { [] }
|
9
|
+
|
10
|
+
it 'returns N/A' do
|
11
|
+
expect(calculator.to_s).to eq 'N/A'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'scores passed in' do
|
16
|
+
let(:scores) { [6.2, 5.3, 9.4] }
|
17
|
+
it 'returns an average rounded to 1 decimal point' do
|
18
|
+
expect(calculator.to_s).to eq '7.0'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'ratr'
|
2
|
+
|
3
|
+
describe Ratr::MetaRating do
|
4
|
+
let(:na) { "N/A" }
|
5
|
+
describe 'comparison' do
|
6
|
+
let(:no_score) { Ratr::MetaRating.new(na, na) }
|
7
|
+
let(:high_score) { Ratr::MetaRating.new(8.4) }
|
8
|
+
let(:low_score) { Ratr::MetaRating.new(8.3) }
|
9
|
+
|
10
|
+
context 'comparison of no score with anything should be less than' do
|
11
|
+
it { expect(no_score < no_score).to be true }
|
12
|
+
it { expect(no_score < low_score).to be true }
|
13
|
+
it { expect(no_score < high_score).to be true }
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'comparison of actual score with no score should be greater than' do
|
17
|
+
it { expect(high_score > no_score).to be true }
|
18
|
+
it { expect(low_score > no_score).to be true }
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'comparison of actual numbers should follow reason' do
|
22
|
+
it { expect(high_score > low_score).to be true }
|
23
|
+
it { expect(low_score == low_score).to be true }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/spec/source_spec.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'ratr'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
describe Ratr::Source do
|
5
|
+
let(:movies) { {
|
6
|
+
first: OpenStruct.new(title: "8 Mile", year: "2002"),
|
7
|
+
second: OpenStruct.new(title: "The Abyss", year: "1989") }
|
8
|
+
}
|
9
|
+
|
10
|
+
describe 'rotten tomatoes source' do
|
11
|
+
let(:source) { Ratr::Source.new(Ratr::SerialHttpProcessor, Ratr::RottenTomatoesHttpWrapper.new) }
|
12
|
+
|
13
|
+
describe '#fetch', :vcr do
|
14
|
+
it "returns scores for each movie provided" do
|
15
|
+
fetched_scores = source.fetch(movies)
|
16
|
+
|
17
|
+
expect(fetched_scores[:first]).to eq([5.4, 7.6])
|
18
|
+
expect(fetched_scores[:second]).to eq([8.3, 8.9])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'omdb source' do
|
24
|
+
let(:source) { Ratr::Source.new(Ratr::ParallelHttpProcessor, Ratr::OmdbHttpWrapper.new) }
|
25
|
+
|
26
|
+
describe '#fetch', :vcr do
|
27
|
+
it "returns scores for each movie provided" do
|
28
|
+
fetched_scores = source.fetch(movies)
|
29
|
+
|
30
|
+
expect(fetched_scores[:first]).to eq [6.9]
|
31
|
+
expect(fetched_scores[:second]).to eq [7.6]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
require 'bundler/setup'
|
3
|
+
Bundler.setup
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.expect_with :rspec do |expectations|
|
7
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
8
|
+
end
|
9
|
+
|
10
|
+
config.mock_with :rspec do |mocks|
|
11
|
+
mocks.verify_partial_doubles = true
|
12
|
+
end
|
13
|
+
|
14
|
+
if config.files_to_run.one?
|
15
|
+
config.default_formatter = 'doc'
|
16
|
+
end
|
17
|
+
|
18
|
+
config.order = :random
|
19
|
+
end
|
20
|
+
|
21
|
+
VCR.configure do |c|
|
22
|
+
c.cassette_library_dir = 'spec/vcr'
|
23
|
+
c.hook_into :webmock
|
24
|
+
c.configure_rspec_metadata!
|
25
|
+
end
|
@@ -0,0 +1,671 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://www.omdbapi.com/?t=7%20Faces%20of%20Dr.%20Lao&y=1964
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.1
|
12
|
+
response:
|
13
|
+
status:
|
14
|
+
code: 200
|
15
|
+
message: OK
|
16
|
+
headers:
|
17
|
+
Cache-Control:
|
18
|
+
- public, max-age=3083
|
19
|
+
Content-Type:
|
20
|
+
- application/json; charset=utf-8
|
21
|
+
Expires:
|
22
|
+
- Fri, 08 May 2015 13:05:58 GMT
|
23
|
+
Last-Modified:
|
24
|
+
- Fri, 08 May 2015 12:05:58 GMT
|
25
|
+
Vary:
|
26
|
+
- ! '*'
|
27
|
+
Server:
|
28
|
+
- Microsoft-IIS/7.5
|
29
|
+
X-Aspnet-Version:
|
30
|
+
- 4.0.30319
|
31
|
+
X-Powered-By:
|
32
|
+
- ASP.NET
|
33
|
+
Access-Control-Allow-Origin:
|
34
|
+
- ! '*'
|
35
|
+
Date:
|
36
|
+
- Fri, 08 May 2015 12:14:34 GMT
|
37
|
+
Content-Length:
|
38
|
+
- '807'
|
39
|
+
body:
|
40
|
+
encoding: US-ASCII
|
41
|
+
string: ! '{"Title":"7 Faces of Dr. Lao","Year":"1964","Rated":"N/A","Released":"13
|
42
|
+
Aug 1964","Runtime":"100 min","Genre":"Fantasy, Mystery, Western","Director":"George
|
43
|
+
Pal","Writer":"Charles Beaumont (screen play), Charles G. Finney (based on
|
44
|
+
the novel \"The Circus of Dr. Lao\" by)","Actors":"Tony Randall, Barbara Eden,
|
45
|
+
Arthur O''Connell, John Ericson","Plot":"A mysterious circus comes to a western
|
46
|
+
town bearing wonders and characters that entertain the inhabitants and teach
|
47
|
+
valuable lessons.","Language":"English","Country":"USA","Awards":"Nominated
|
48
|
+
for 1 Oscar. Another 1 win & 1 nomination.","Poster":"http://ia.media-imdb.com/images/M/MV5BMTMyNTgyMTAxMV5BMl5BanBnXkFtZTcwMDM2NDAyMQ@@._V1_SX300.jpg","Metascore":"N/A","imdbRating":"7.3","imdbVotes":"3,192","imdbID":"tt0057812","Type":"movie","Response":"True"}'
|
49
|
+
http_version:
|
50
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
51
|
+
- request:
|
52
|
+
method: get
|
53
|
+
uri: http://www.omdbapi.com/?t=7th%20Heaven&y=1927
|
54
|
+
body:
|
55
|
+
encoding: US-ASCII
|
56
|
+
string: ''
|
57
|
+
headers:
|
58
|
+
User-Agent:
|
59
|
+
- Faraday v0.9.1
|
60
|
+
response:
|
61
|
+
status:
|
62
|
+
code: 200
|
63
|
+
message: OK
|
64
|
+
headers:
|
65
|
+
Cache-Control:
|
66
|
+
- public, max-age=3083
|
67
|
+
Content-Type:
|
68
|
+
- application/json; charset=utf-8
|
69
|
+
Expires:
|
70
|
+
- Fri, 08 May 2015 13:05:58 GMT
|
71
|
+
Last-Modified:
|
72
|
+
- Fri, 08 May 2015 12:05:58 GMT
|
73
|
+
Vary:
|
74
|
+
- ! '*'
|
75
|
+
Server:
|
76
|
+
- Microsoft-IIS/7.5
|
77
|
+
X-Aspnet-Version:
|
78
|
+
- 4.0.30319
|
79
|
+
X-Powered-By:
|
80
|
+
- ASP.NET
|
81
|
+
Access-Control-Allow-Origin:
|
82
|
+
- ! '*'
|
83
|
+
Date:
|
84
|
+
- Fri, 08 May 2015 12:14:34 GMT
|
85
|
+
Content-Length:
|
86
|
+
- '746'
|
87
|
+
body:
|
88
|
+
encoding: US-ASCII
|
89
|
+
string: ! '{"Title":"7th Heaven","Year":"1927","Rated":"NOT RATED","Released":"N/A","Runtime":"110
|
90
|
+
min","Genre":"Drama, Romance","Director":"Frank Borzage","Writer":"Austin
|
91
|
+
Strong (play), Benjamin Glazer (screenplay), H.H. Caldwell (titles), Katherine
|
92
|
+
Hilliker (titles)","Actors":"Janet Gaynor, Charles Farrell, Ben Bard, Albert
|
93
|
+
Gran","Plot":"A street cleaner saves a young woman''s life, and the pair slowly
|
94
|
+
fall in love until war intervenes.","Language":"English","Country":"USA","Awards":"Won
|
95
|
+
3 Oscars. Another 3 wins & 2 nominations.","Poster":"http://ia.media-imdb.com/images/M/MV5BMTk2MjUzMzk3OV5BMl5BanBnXkFtZTcwOTk1MjQxMw@@._V1_SX300.jpg","Metascore":"N/A","imdbRating":"7.9","imdbVotes":"1,790","imdbID":"tt0018379","Type":"movie","Response":"True"}'
|
96
|
+
http_version:
|
97
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
98
|
+
- request:
|
99
|
+
method: get
|
100
|
+
uri: http://www.omdbapi.com/?t=8%20Mile&y=2002
|
101
|
+
body:
|
102
|
+
encoding: US-ASCII
|
103
|
+
string: ''
|
104
|
+
headers:
|
105
|
+
User-Agent:
|
106
|
+
- Faraday v0.9.1
|
107
|
+
response:
|
108
|
+
status:
|
109
|
+
code: 200
|
110
|
+
message: OK
|
111
|
+
headers:
|
112
|
+
Cache-Control:
|
113
|
+
- public, max-age=3083
|
114
|
+
Content-Type:
|
115
|
+
- application/json; charset=utf-8
|
116
|
+
Expires:
|
117
|
+
- Fri, 08 May 2015 13:05:58 GMT
|
118
|
+
Last-Modified:
|
119
|
+
- Fri, 08 May 2015 12:05:58 GMT
|
120
|
+
Vary:
|
121
|
+
- ! '*'
|
122
|
+
Server:
|
123
|
+
- Microsoft-IIS/7.5
|
124
|
+
X-Aspnet-Version:
|
125
|
+
- 4.0.30319
|
126
|
+
X-Powered-By:
|
127
|
+
- ASP.NET
|
128
|
+
Access-Control-Allow-Origin:
|
129
|
+
- ! '*'
|
130
|
+
Date:
|
131
|
+
- Fri, 08 May 2015 12:14:35 GMT
|
132
|
+
Content-Length:
|
133
|
+
- '716'
|
134
|
+
body:
|
135
|
+
encoding: US-ASCII
|
136
|
+
string: ! '{"Title":"8 Mile","Year":"2002","Rated":"R","Released":"8 Nov 2002","Runtime":"110
|
137
|
+
min","Genre":"Drama, Music","Director":"Curtis Hanson","Writer":"Scott Silver","Actors":"Eminem,
|
138
|
+
Kim Basinger, Mekhi Phifer, Brittany Murphy","Plot":"A young rapper, struggling
|
139
|
+
with every aspect of his life, wants to make the most of what could be his
|
140
|
+
final opportunity but his problems around gives him doubts.","Language":"English","Country":"USA,
|
141
|
+
Germany","Awards":"Won 1 Oscar. Another 10 wins & 19 nominations.","Poster":"http://ia.media-imdb.com/images/M/MV5BMTU2MTgyOTk3MF5BMl5BanBnXkFtZTYwOTg2NTI5._V1_SX300.jpg","Metascore":"77","imdbRating":"6.9","imdbVotes":"156,790","imdbID":"tt0298203","Type":"movie","Response":"True"}'
|
142
|
+
http_version:
|
143
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
144
|
+
- request:
|
145
|
+
method: get
|
146
|
+
uri: http://www.omdbapi.com/?t=12%20Years%20a%20Slave&y=2013
|
147
|
+
body:
|
148
|
+
encoding: US-ASCII
|
149
|
+
string: ''
|
150
|
+
headers:
|
151
|
+
User-Agent:
|
152
|
+
- Faraday v0.9.1
|
153
|
+
response:
|
154
|
+
status:
|
155
|
+
code: 200
|
156
|
+
message: OK
|
157
|
+
headers:
|
158
|
+
Cache-Control:
|
159
|
+
- public, max-age=3082
|
160
|
+
Content-Type:
|
161
|
+
- application/json; charset=utf-8
|
162
|
+
Expires:
|
163
|
+
- Fri, 08 May 2015 13:05:58 GMT
|
164
|
+
Last-Modified:
|
165
|
+
- Fri, 08 May 2015 12:05:58 GMT
|
166
|
+
Vary:
|
167
|
+
- ! '*'
|
168
|
+
Server:
|
169
|
+
- Microsoft-IIS/7.5
|
170
|
+
X-Aspnet-Version:
|
171
|
+
- 4.0.30319
|
172
|
+
X-Powered-By:
|
173
|
+
- ASP.NET
|
174
|
+
Access-Control-Allow-Origin:
|
175
|
+
- ! '*'
|
176
|
+
Date:
|
177
|
+
- Fri, 08 May 2015 12:14:35 GMT
|
178
|
+
Content-Length:
|
179
|
+
- '779'
|
180
|
+
body:
|
181
|
+
encoding: US-ASCII
|
182
|
+
string: ! '{"Title":"12 Years a Slave","Year":"2013","Rated":"R","Released":"8
|
183
|
+
Nov 2013","Runtime":"134 min","Genre":"Biography, Drama, History","Director":"Steve
|
184
|
+
McQueen","Writer":"John Ridley (screenplay), Solomon Northup (based on \"Twelve
|
185
|
+
Years a Slave\" by)","Actors":"Chiwetel Ejiofor, Dwight Henry, Dickie Gravois,
|
186
|
+
Bryan Batt","Plot":"In the antebellum United States, Solomon Northup, a free
|
187
|
+
black man from upstate New York, is abducted and sold into slavery.","Language":"English","Country":"USA,
|
188
|
+
UK","Awards":"Won 3 Oscars. Another 240 wins & 224 nominations.","Poster":"http://ia.media-imdb.com/images/M/MV5BMjExMTEzODkyN15BMl5BanBnXkFtZTcwNTU4NTc4OQ@@._V1_SX300.jpg","Metascore":"97","imdbRating":"8.1","imdbVotes":"322,173","imdbID":"tt2024544","Type":"movie","Response":"True"}'
|
189
|
+
http_version:
|
190
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
191
|
+
- request:
|
192
|
+
method: get
|
193
|
+
uri: http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=ww8qgxbhjbqudvupbr8sqd7x&page_limit=1&q=7%20Faces%20of%20Dr.%20Lao%201964
|
194
|
+
body:
|
195
|
+
encoding: US-ASCII
|
196
|
+
string: ''
|
197
|
+
headers:
|
198
|
+
User-Agent:
|
199
|
+
- Faraday v0.9.1
|
200
|
+
response:
|
201
|
+
status:
|
202
|
+
code: 200
|
203
|
+
message: OK
|
204
|
+
headers:
|
205
|
+
Content-Language:
|
206
|
+
- en-US
|
207
|
+
Content-Type:
|
208
|
+
- text/javascript;charset=ISO-8859-1
|
209
|
+
Date:
|
210
|
+
- Fri, 08 May 2015 12:06:04 GMT
|
211
|
+
Flx-Build-Date:
|
212
|
+
- '2015-05-07 12:53:20'
|
213
|
+
Flx-Commit:
|
214
|
+
- JOBRELEASE.2015-05-07.12-25-31 3a929c5
|
215
|
+
Flx-Server:
|
216
|
+
- web235.flixster.com
|
217
|
+
Rt-Commit:
|
218
|
+
- 2001eec
|
219
|
+
Server:
|
220
|
+
- Mashery Proxy
|
221
|
+
Set-Cookie:
|
222
|
+
- JSESSIONID=7C30C4227E56EE8E326FFFF83DD40C9F; Path=/; HttpOnly
|
223
|
+
Vary:
|
224
|
+
- User-Agent,Accept-Encoding
|
225
|
+
X-Mashery-Responder:
|
226
|
+
- prod-j-worker-us-east-1d-70.mashery.com
|
227
|
+
Content-Length:
|
228
|
+
- '2013'
|
229
|
+
Connection:
|
230
|
+
- keep-alive
|
231
|
+
body:
|
232
|
+
encoding: US-ASCII
|
233
|
+
string: ! '
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
{"total":1,"movies":[{"id":"17124","title":"Seven Faces of Dr. Lao","year":1964,"mpaa_rating":"Unrated","runtime":100,"release_dates":{"theater":"1964-03-18","dvd":"2000-10-03"},"ratings":{"critics_rating":"Fresh","critics_score":100,"audience_rating":"Upright","audience_score":78},"synopsis":"","posters":{"thumbnail":"http://resizing.flixster.com/o_MXZ-V2u1UL6rckvHZCtYluNxk=/53x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/15/34/11153473_ori.jpg","profile":"http://resizing.flixster.com/o_MXZ-V2u1UL6rckvHZCtYluNxk=/53x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/15/34/11153473_ori.jpg","detailed":"http://resizing.flixster.com/o_MXZ-V2u1UL6rckvHZCtYluNxk=/53x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/15/34/11153473_ori.jpg","original":"http://resizing.flixster.com/o_MXZ-V2u1UL6rckvHZCtYluNxk=/53x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/15/34/11153473_ori.jpg"},"abridged_cast":[{"name":"Tony
|
267
|
+
Randall","id":"162657394","characters":["Dr. Lao/Merlin/Pan/Abominable Snowman/Medusa"]},{"name":"Barbara
|
268
|
+
Eden","id":"364604435","characters":["Angela Benedict"]},{"name":"Arthur O''Connell","id":"353658591","characters":["Clint
|
269
|
+
Stark"]},{"name":"John Ericson","id":"405589649","characters":["Ed Cunningham"]},{"name":"Lee
|
270
|
+
Patrick","id":"770710631","characters":["Mrs. Howard T. Cassan"]}],"alternate_ids":{"imdb":"0057812"},"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/17124.json","alternate":"http://www.rottentomatoes.com/m/seven_faces_of_dr_lao/","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/17124/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/17124/reviews.json","similar":"http://api.rottentomatoes.com/api/public/v1.0/movies/17124/similar.json"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=7+Faces+of+Dr.+Lao+1964&page_limit=1&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}"}
|
271
|
+
|
272
|
+
'
|
273
|
+
http_version:
|
274
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
275
|
+
- request:
|
276
|
+
method: get
|
277
|
+
uri: http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=ww8qgxbhjbqudvupbr8sqd7x&page_limit=1&q=7th%20Heaven%201927
|
278
|
+
body:
|
279
|
+
encoding: US-ASCII
|
280
|
+
string: ''
|
281
|
+
headers:
|
282
|
+
User-Agent:
|
283
|
+
- Faraday v0.9.1
|
284
|
+
response:
|
285
|
+
status:
|
286
|
+
code: 200
|
287
|
+
message: OK
|
288
|
+
headers:
|
289
|
+
Content-Language:
|
290
|
+
- en-US
|
291
|
+
Content-Type:
|
292
|
+
- text/javascript;charset=ISO-8859-1
|
293
|
+
Date:
|
294
|
+
- Fri, 08 May 2015 12:06:04 GMT
|
295
|
+
Flx-Build-Date:
|
296
|
+
- '2015-05-07 12:53:20'
|
297
|
+
Flx-Commit:
|
298
|
+
- JOBRELEASE.2015-05-07.12-25-31 3a929c5
|
299
|
+
Flx-Server:
|
300
|
+
- web236.flixster.com
|
301
|
+
Rt-Commit:
|
302
|
+
- 2001eec
|
303
|
+
Server:
|
304
|
+
- Mashery Proxy
|
305
|
+
Set-Cookie:
|
306
|
+
- JSESSIONID=68309AC19807C632740ECD2DDF07B218; Path=/; HttpOnly
|
307
|
+
Vary:
|
308
|
+
- User-Agent,Accept-Encoding
|
309
|
+
X-Mashery-Responder:
|
310
|
+
- prod-j-worker-us-east-1b-52.mashery.com
|
311
|
+
Content-Length:
|
312
|
+
- '2049'
|
313
|
+
Connection:
|
314
|
+
- keep-alive
|
315
|
+
body:
|
316
|
+
encoding: US-ASCII
|
317
|
+
string: ! '
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
{"total":8,"movies":[{"id":"335719007","title":"Seventh Heaven (1927)","year":1927,"mpaa_rating":"Unrated","runtime":119,"release_dates":{"theater":"1927-05-25","dvd":"2008-12-09"},"ratings":{"critics_rating":"Fresh","critics_score":100,"audience_rating":"Upright","audience_score":87},"synopsis":"","posters":{"thumbnail":"http://resizing.flixster.com/LG34FNJCVJbLK44bRD-0LvfwvZ8=/54x79/dkpu1ddg7pbsk.cloudfront.net/movie/10/90/29/10902929_ori.jpg","profile":"http://resizing.flixster.com/LG34FNJCVJbLK44bRD-0LvfwvZ8=/54x79/dkpu1ddg7pbsk.cloudfront.net/movie/10/90/29/10902929_ori.jpg","detailed":"http://resizing.flixster.com/LG34FNJCVJbLK44bRD-0LvfwvZ8=/54x79/dkpu1ddg7pbsk.cloudfront.net/movie/10/90/29/10902929_ori.jpg","original":"http://resizing.flixster.com/LG34FNJCVJbLK44bRD-0LvfwvZ8=/54x79/dkpu1ddg7pbsk.cloudfront.net/movie/10/90/29/10902929_ori.jpg"},"abridged_cast":[{"name":"Janet
|
351
|
+
Gaynor","id":"326397126","characters":["Diane"]},{"name":"Charles Farrell","id":"335719008","characters":["Chico"]},{"name":"Gladys
|
352
|
+
Brockwell","id":"770787029","characters":["Nana"]},{"name":"Ben Bard","id":"186045344","characters":["Col.
|
353
|
+
Brissac"]},{"name":"David Butler (I)","id":"335719010","characters":["Gobin"]}],"alternate_ids":{"imdb":"0018379"},"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/335719007.json","alternate":"http://www.rottentomatoes.com/m/7th_heaven/","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/335719007/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/335719007/reviews.json","similar":"http://api.rottentomatoes.com/api/public/v1.0/movies/335719007/similar.json"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=7th+Heaven+1927&page_limit=1&page=1","next":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=7th+Heaven+1927&page_limit=1&page=2"},"link_template":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q={search-term}&page_limit={results-per-page}&page={page-number}"}
|
354
|
+
|
355
|
+
'
|
356
|
+
http_version:
|
357
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
358
|
+
- request:
|
359
|
+
method: get
|
360
|
+
uri: http://www.omdbapi.com/?t=20%20Feet%20from%20Stardom&y=2013
|
361
|
+
body:
|
362
|
+
encoding: US-ASCII
|
363
|
+
string: ''
|
364
|
+
headers:
|
365
|
+
User-Agent:
|
366
|
+
- Faraday v0.9.1
|
367
|
+
response:
|
368
|
+
status:
|
369
|
+
code: 200
|
370
|
+
message: OK
|
371
|
+
headers:
|
372
|
+
Cache-Control:
|
373
|
+
- public, max-age=3083
|
374
|
+
Content-Type:
|
375
|
+
- application/json; charset=utf-8
|
376
|
+
Expires:
|
377
|
+
- Fri, 08 May 2015 13:05:59 GMT
|
378
|
+
Last-Modified:
|
379
|
+
- Fri, 08 May 2015 12:05:59 GMT
|
380
|
+
Vary:
|
381
|
+
- ! '*'
|
382
|
+
Server:
|
383
|
+
- Microsoft-IIS/7.5
|
384
|
+
X-Aspnet-Version:
|
385
|
+
- 4.0.30319
|
386
|
+
X-Powered-By:
|
387
|
+
- ASP.NET
|
388
|
+
Access-Control-Allow-Origin:
|
389
|
+
- ! '*'
|
390
|
+
Date:
|
391
|
+
- Fri, 08 May 2015 12:14:35 GMT
|
392
|
+
Content-Length:
|
393
|
+
- '47'
|
394
|
+
body:
|
395
|
+
encoding: US-ASCII
|
396
|
+
string: ! '{"Response":"False","Error":"Movie not found!"}'
|
397
|
+
http_version:
|
398
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
399
|
+
- request:
|
400
|
+
method: get
|
401
|
+
uri: http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=ww8qgxbhjbqudvupbr8sqd7x&page_limit=1&q=8%20Mile%202002
|
402
|
+
body:
|
403
|
+
encoding: US-ASCII
|
404
|
+
string: ''
|
405
|
+
headers:
|
406
|
+
User-Agent:
|
407
|
+
- Faraday v0.9.1
|
408
|
+
response:
|
409
|
+
status:
|
410
|
+
code: 200
|
411
|
+
message: OK
|
412
|
+
headers:
|
413
|
+
Content-Language:
|
414
|
+
- en-US
|
415
|
+
Content-Type:
|
416
|
+
- text/javascript;charset=ISO-8859-1
|
417
|
+
Date:
|
418
|
+
- Fri, 08 May 2015 12:06:04 GMT
|
419
|
+
Flx-Build-Date:
|
420
|
+
- '2015-05-07 12:53:20'
|
421
|
+
Flx-Commit:
|
422
|
+
- JOBRELEASE.2015-05-07.12-25-31 3a929c5
|
423
|
+
Flx-Server:
|
424
|
+
- web235.flixster.com
|
425
|
+
Rt-Commit:
|
426
|
+
- 2001eec
|
427
|
+
Server:
|
428
|
+
- Mashery Proxy
|
429
|
+
Set-Cookie:
|
430
|
+
- JSESSIONID=31FA3879BB96A73E02A2862FBF104585; Path=/; HttpOnly
|
431
|
+
Vary:
|
432
|
+
- User-Agent,Accept-Encoding
|
433
|
+
X-Mashery-Responder:
|
434
|
+
- prod-j-worker-us-east-1b-59.mashery.com
|
435
|
+
Content-Length:
|
436
|
+
- '2035'
|
437
|
+
Connection:
|
438
|
+
- keep-alive
|
439
|
+
body:
|
440
|
+
encoding: US-ASCII
|
441
|
+
string: ! '
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
|
458
|
+
|
459
|
+
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
|
474
|
+
{"total":6,"movies":[{"id":"13198","title":"8 Mile","year":2002,"mpaa_rating":"R","runtime":111,"critics_consensus":"","release_dates":{"theater":"2002-11-08","dvd":"2003-03-18"},"ratings":{"critics_rating":"Certified
|
475
|
+
Fresh","critics_score":76,"audience_rating":"Spilled","audience_score":54},"synopsis":"","posters":{"thumbnail":"http://resizing.flixster.com/-dRJgjsKWKaYjNmXqNAxz3LqIyE=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/18/06/11180668_ori.jpg","profile":"http://resizing.flixster.com/-dRJgjsKWKaYjNmXqNAxz3LqIyE=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/18/06/11180668_ori.jpg","detailed":"http://resizing.flixster.com/-dRJgjsKWKaYjNmXqNAxz3LqIyE=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/18/06/11180668_ori.jpg","original":"http://resizing.flixster.com/-dRJgjsKWKaYjNmXqNAxz3LqIyE=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/18/06/11180668_ori.jpg"},"abridged_cast":[{"name":"Eminem","id":"162688835","characters":["Jimmy
|
476
|
+
`Rabbit'' Smith"]},{"name":"Kim Basinger","id":"162664684","characters":["Stephanie"]},{"name":"Mekhi
|
477
|
+
Phifer","id":"162667293","characters":["Future"]},{"name":"Brittany Murphy","id":"162666533","characters":["Alex"]},{"name":"Evan
|
478
|
+
Jones","id":"364627387","characters":["Cheddar Bob"]}],"alternate_ids":{"imdb":"0298203"},"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/13198.json","alternate":"http://www.rottentomatoes.com/m/8_mile/","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/13198/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/13198/reviews.json","similar":"http://api.rottentomatoes.com/api/public/v1.0/movies/13198/similar.json"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=8+Mile+2002&page_limit=1&page=1","next":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=8+Mile+2002&page_limit=1&page=2"},"link_template":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q={search-term}&page_limit={results-per-page}&page={page-number}"}
|
479
|
+
|
480
|
+
'
|
481
|
+
http_version:
|
482
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
483
|
+
- request:
|
484
|
+
method: get
|
485
|
+
uri: http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=ww8qgxbhjbqudvupbr8sqd7x&page_limit=1&q=12%20Years%20a%20Slave%202013
|
486
|
+
body:
|
487
|
+
encoding: US-ASCII
|
488
|
+
string: ''
|
489
|
+
headers:
|
490
|
+
User-Agent:
|
491
|
+
- Faraday v0.9.1
|
492
|
+
response:
|
493
|
+
status:
|
494
|
+
code: 200
|
495
|
+
message: OK
|
496
|
+
headers:
|
497
|
+
Content-Language:
|
498
|
+
- en-US
|
499
|
+
Content-Type:
|
500
|
+
- text/javascript;charset=ISO-8859-1
|
501
|
+
Date:
|
502
|
+
- Fri, 08 May 2015 12:06:05 GMT
|
503
|
+
Flx-Build-Date:
|
504
|
+
- '2015-05-07 12:53:20'
|
505
|
+
Flx-Commit:
|
506
|
+
- JOBRELEASE.2015-05-07.12-25-31 3a929c5
|
507
|
+
Flx-Server:
|
508
|
+
- web238.flixster.com
|
509
|
+
Rt-Commit:
|
510
|
+
- 2001eec
|
511
|
+
Server:
|
512
|
+
- Mashery Proxy
|
513
|
+
Set-Cookie:
|
514
|
+
- JSESSIONID=481A5C3A16E27D6F8F76CD03794AED09; Path=/; HttpOnly
|
515
|
+
Vary:
|
516
|
+
- User-Agent,Accept-Encoding
|
517
|
+
X-Mashery-Responder:
|
518
|
+
- prod-j-worker-us-east-1d-69.mashery.com
|
519
|
+
Content-Length:
|
520
|
+
- '2321'
|
521
|
+
Connection:
|
522
|
+
- keep-alive
|
523
|
+
body:
|
524
|
+
encoding: US-ASCII
|
525
|
+
string: ! '
|
526
|
+
|
527
|
+
|
528
|
+
|
529
|
+
|
530
|
+
|
531
|
+
|
532
|
+
|
533
|
+
|
534
|
+
|
535
|
+
|
536
|
+
|
537
|
+
|
538
|
+
|
539
|
+
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
|
544
|
+
|
545
|
+
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
|
550
|
+
|
551
|
+
|
552
|
+
|
553
|
+
|
554
|
+
|
555
|
+
|
556
|
+
|
557
|
+
|
558
|
+
{"total":1,"movies":[{"id":"771316210","title":"12 Years a Slave","year":2013,"mpaa_rating":"R","runtime":134,"critics_consensus":"","release_dates":{"theater":"2013-10-18","dvd":"2014-03-04"},"ratings":{"critics_rating":"Certified
|
559
|
+
Fresh","critics_score":96,"audience_rating":"Upright","audience_score":90},"synopsis":"Chiwetel
|
560
|
+
Ejiofor stars as Solomon Northup, the New York State citizen who was kidnapped
|
561
|
+
and made to work on a plantation in New Orleans in the 1800s. Steve McQueen
|
562
|
+
(Hunger) directs from a script he co-wrote with John Ridley, based in part
|
563
|
+
by Northup''s memoir. Michael Fassbender, Brad Pitt, Benedict Cumberbatch,
|
564
|
+
Sarah Paulson, and Paul Giamatti co-star. ~ Jeremy Wheeler, Rovi","posters":{"thumbnail":"http://resizing.flixster.com/8_gLS69ly81CAMZBpcGJMbKGja0=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/64/11176495_ori.jpg","profile":"http://resizing.flixster.com/8_gLS69ly81CAMZBpcGJMbKGja0=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/64/11176495_ori.jpg","detailed":"http://resizing.flixster.com/8_gLS69ly81CAMZBpcGJMbKGja0=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/64/11176495_ori.jpg","original":"http://resizing.flixster.com/8_gLS69ly81CAMZBpcGJMbKGja0=/54x81/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/64/11176495_ori.jpg"},"abridged_cast":[{"name":"Lupita
|
565
|
+
Nyongo''o","id":"771524199"},{"name":"Chiwetel Ejiofor","id":"162654272","characters":["Solomon
|
566
|
+
Northup"]},{"name":"Michael Fassbender","id":"364641814","characters":["Edwin
|
567
|
+
Epps"]},{"name":"Benedict Cumberbatch","id":"355028249","characters":["Ford"]},{"name":"Paul
|
568
|
+
Giamatti","id":"162683649","characters":["Freeman"]}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771316210.json","alternate":"http://www.rottentomatoes.com/m/12_years_a_slave/","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771316210/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771316210/reviews.json","similar":"http://api.rottentomatoes.com/api/public/v1.0/movies/771316210/similar.json"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=12+Years+a+Slave+2013&page_limit=1&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}"}
|
569
|
+
|
570
|
+
'
|
571
|
+
http_version:
|
572
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
573
|
+
- request:
|
574
|
+
method: get
|
575
|
+
uri: http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=ww8qgxbhjbqudvupbr8sqd7x&page_limit=1&q=20%20Feet%20from%20Stardom%202013
|
576
|
+
body:
|
577
|
+
encoding: US-ASCII
|
578
|
+
string: ''
|
579
|
+
headers:
|
580
|
+
User-Agent:
|
581
|
+
- Faraday v0.9.1
|
582
|
+
response:
|
583
|
+
status:
|
584
|
+
code: 200
|
585
|
+
message: OK
|
586
|
+
headers:
|
587
|
+
Content-Language:
|
588
|
+
- en-US
|
589
|
+
Content-Type:
|
590
|
+
- text/javascript;charset=ISO-8859-1
|
591
|
+
Date:
|
592
|
+
- Fri, 08 May 2015 12:06:05 GMT
|
593
|
+
Flx-Build-Date:
|
594
|
+
- '2015-05-07 12:53:20'
|
595
|
+
Flx-Commit:
|
596
|
+
- JOBRELEASE.2015-05-07.12-25-31 3a929c5
|
597
|
+
Flx-Server:
|
598
|
+
- web235.flixster.com
|
599
|
+
Rt-Commit:
|
600
|
+
- 2001eec
|
601
|
+
Server:
|
602
|
+
- Mashery Proxy
|
603
|
+
Set-Cookie:
|
604
|
+
- JSESSIONID=DFC326FDFF7BF8310CD5E3AFD1BC55DD; Path=/; HttpOnly
|
605
|
+
Vary:
|
606
|
+
- User-Agent,Accept-Encoding
|
607
|
+
X-Mashery-Responder:
|
608
|
+
- prod-j-worker-us-east-1e-75.mashery.com
|
609
|
+
Content-Length:
|
610
|
+
- '2929'
|
611
|
+
Connection:
|
612
|
+
- keep-alive
|
613
|
+
body:
|
614
|
+
encoding: US-ASCII
|
615
|
+
string: ! '
|
616
|
+
|
617
|
+
|
618
|
+
|
619
|
+
|
620
|
+
|
621
|
+
|
622
|
+
|
623
|
+
|
624
|
+
|
625
|
+
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
|
630
|
+
|
631
|
+
|
632
|
+
|
633
|
+
|
634
|
+
|
635
|
+
|
636
|
+
|
637
|
+
|
638
|
+
|
639
|
+
|
640
|
+
|
641
|
+
|
642
|
+
|
643
|
+
|
644
|
+
|
645
|
+
|
646
|
+
|
647
|
+
|
648
|
+
{"total":1,"movies":[{"id":"771325066","title":"20 Feet From Stardom","year":2013,"mpaa_rating":"PG-13","runtime":89,"critics_consensus":"","release_dates":{"theater":"2013-06-14","dvd":"2014-01-14"},"ratings":{"critics_rating":"Certified
|
649
|
+
Fresh","critics_score":99,"audience_rating":"Upright","audience_score":82},"synopsis":"Millions
|
650
|
+
know their voices, but no one knows their names. In his compelling new film
|
651
|
+
20 FEET FROM STARDOM, award-winning director Morgan Neville shines a spotlight
|
652
|
+
on the untold true story of the backup singers behind some of the greatest
|
653
|
+
musical legends of the 21st century. Triumphant and heartbreaking in equal
|
654
|
+
measure, the film is both a tribute to the unsung voices who brought shape
|
655
|
+
and style to popular music and a reflection on the conflicts, sacrifices and
|
656
|
+
rewards of a career spent harmonizing with others. These gifted artists span
|
657
|
+
a range of styles, genres and eras of popular music, but each has a uniquely
|
658
|
+
fascinating and personal story to share of life spent in the shadows of superstardom.
|
659
|
+
Along with rare archival footage and a peerless soundtrack, 20 FEET FROM STARDOM
|
660
|
+
boasts intimate interviews with Bruce Springsteen, Stevie Wonder, Mick Jagger
|
661
|
+
and Sting to name just a few. However, these world-famous figures take a backseat
|
662
|
+
to the diverse array of backup singers whose lives and stories take center
|
663
|
+
stage in the film. (c) TWC-Radius","posters":{"thumbnail":"http://resizing.flixster.com/l2mq3vN48iop1SnEYU3DVTe5A2Q=/54x77/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/16/11171622_ori.jpg","profile":"http://resizing.flixster.com/l2mq3vN48iop1SnEYU3DVTe5A2Q=/54x77/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/16/11171622_ori.jpg","detailed":"http://resizing.flixster.com/l2mq3vN48iop1SnEYU3DVTe5A2Q=/54x77/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/16/11171622_ori.jpg","original":"http://resizing.flixster.com/l2mq3vN48iop1SnEYU3DVTe5A2Q=/54x77/dkpu1ddg7pbsk.cloudfront.net/movie/11/17/16/11171622_ori.jpg"},"abridged_cast":[{"name":"Bette
|
664
|
+
Midler","id":"162659059"},{"name":"Lesley Miller","id":"770702774"},{"name":"Arnold
|
665
|
+
McCuller","id":"770743426"},{"name":"Janice Pendarvis","id":"770968336"},{"name":"Nicki
|
666
|
+
Richards","id":"770783306"}],"alternate_ids":{"imdb":"2396566"},"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771325066.json","alternate":"http://www.rottentomatoes.com/m/20_feet_from_stardom/","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771325066/cast.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771325066/reviews.json","similar":"http://api.rottentomatoes.com/api/public/v1.0/movies/771325066/similar.json"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=20+Feet+from+Stardom+2013&page_limit=1&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}"}
|
667
|
+
|
668
|
+
'
|
669
|
+
http_version:
|
670
|
+
recorded_at: Fri, 08 May 2015 12:14:36 GMT
|
671
|
+
recorded_with: VCR 2.9.3
|