reviewed 1.0.2 → 1.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.
- checksums.yaml +4 -4
- data/lib/reviewed/client.rb +0 -1
- data/lib/reviewed/version.rb +1 -1
- metadata +3 -7
- data/lib/faraday/cache.rb +0 -56
- data/lib/reviewed/cache.rb +0 -18
- data/spec/faraday/cache_spec.rb +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb80d253dffaf3400f36312ac88e8b23ff0cebb0
|
4
|
+
data.tar.gz: 58cf68e0686953752759e43a84b1ba10391c7532
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f27184cff50410fe59a27c30b2e24b3130652f320934bdf231537e92925b87720ddad50b84b597ae5504e112a42e3770ba45baa868083ec5a6481a33e263e38
|
7
|
+
data.tar.gz: 777670dd116d31c39ec4b12b92568be2d37e16d8bc5d2fd9a1a8cc14f110861adf874451ce09f5815a70e99801e7294f7fe06c4ad251a4c2ecc05d450effb041
|
data/lib/reviewed/client.rb
CHANGED
data/lib/reviewed/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reviewed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Plante
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -222,7 +222,6 @@ files:
|
|
222
222
|
- README.md
|
223
223
|
- Rakefile
|
224
224
|
- lib/faraday/api_key.rb
|
225
|
-
- lib/faraday/cache.rb
|
226
225
|
- lib/faraday/errors.rb
|
227
226
|
- lib/reviewed.rb
|
228
227
|
- lib/reviewed/article.rb
|
@@ -232,7 +231,6 @@ files:
|
|
232
231
|
- lib/reviewed/award.rb
|
233
232
|
- lib/reviewed/base.rb
|
234
233
|
- lib/reviewed/brand.rb
|
235
|
-
- lib/reviewed/cache.rb
|
236
234
|
- lib/reviewed/client.rb
|
237
235
|
- lib/reviewed/collection.rb
|
238
236
|
- lib/reviewed/deal.rb
|
@@ -257,7 +255,6 @@ files:
|
|
257
255
|
- spec/embeddable_spec.rb
|
258
256
|
- spec/error_spec.rb
|
259
257
|
- spec/faraday/api_key_spec.rb
|
260
|
-
- spec/faraday/cache_spec.rb
|
261
258
|
- spec/faraday/errors_spec.rb
|
262
259
|
- spec/fixtures/vcr/Reviewed_Article/associations/attachments/assigns_attachments_to_the_correct_class.yml
|
263
260
|
- spec/fixtures/vcr/Reviewed_Article/associations/attachments/does_not_has_many_attachments.yml
|
@@ -335,7 +332,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
335
332
|
version: '0'
|
336
333
|
requirements: []
|
337
334
|
rubyforge_project:
|
338
|
-
rubygems_version: 2.0.
|
335
|
+
rubygems_version: 2.0.2
|
339
336
|
signing_key:
|
340
337
|
specification_version: 4
|
341
338
|
summary: A Ruby Gem for Accessing the Reviewed.com API
|
@@ -351,7 +348,6 @@ test_files:
|
|
351
348
|
- spec/embeddable_spec.rb
|
352
349
|
- spec/error_spec.rb
|
353
350
|
- spec/faraday/api_key_spec.rb
|
354
|
-
- spec/faraday/cache_spec.rb
|
355
351
|
- spec/faraday/errors_spec.rb
|
356
352
|
- spec/fixtures/vcr/Reviewed_Article/associations/attachments/assigns_attachments_to_the_correct_class.yml
|
357
353
|
- spec/fixtures/vcr/Reviewed_Article/associations/attachments/does_not_has_many_attachments.yml
|
data/lib/faraday/cache.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'reviewed/cache'
|
2
|
-
|
3
|
-
module Faraday
|
4
|
-
class Cache
|
5
|
-
|
6
|
-
def initialize(app)
|
7
|
-
@app = app
|
8
|
-
end
|
9
|
-
|
10
|
-
def store
|
11
|
-
Reviewed::Cache.store
|
12
|
-
end
|
13
|
-
|
14
|
-
def call(env)
|
15
|
-
@url = env[:url]
|
16
|
-
|
17
|
-
@website_id = env[:request_headers]['x-reviewed-website']
|
18
|
-
|
19
|
-
if serve_from_cache? && store.exist?(cache_key)
|
20
|
-
begin
|
21
|
-
Hashie::Mash.new(MultiJson.load( store.read(cache_key) ))
|
22
|
-
rescue => e
|
23
|
-
raise e.message + ": #{cache_key}"
|
24
|
-
end
|
25
|
-
else
|
26
|
-
@app.call(env).on_complete do |response|
|
27
|
-
if store_response?(response)
|
28
|
-
store.delete(cache_key)
|
29
|
-
storeable_response = MultiJson.dump(response.slice(:status, :body, :response_headers))
|
30
|
-
store.write(cache_key, storeable_response, write_options)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def serve_from_cache?
|
39
|
-
@url.query.blank? || !@url.query.match(/\b(skip|reset)-cache\b/)
|
40
|
-
end
|
41
|
-
|
42
|
-
def store_response?(resp)
|
43
|
-
return false if resp[:status] != 200
|
44
|
-
@url.query.blank? || !@url.query.match(/\bskip-cache\b/)
|
45
|
-
end
|
46
|
-
|
47
|
-
def cache_key
|
48
|
-
[@website_id, @url.request_uri].join(':')
|
49
|
-
end
|
50
|
-
|
51
|
-
def write_options
|
52
|
-
{ expires_in: Integer(ENV['REVIEWED_CACHE_TIMEOUT'] || 90).minutes }
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
data/lib/reviewed/cache.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'active_support/cache'
|
2
|
-
require 'singleton'
|
3
|
-
|
4
|
-
module Reviewed
|
5
|
-
class Cache
|
6
|
-
include Singleton
|
7
|
-
|
8
|
-
def self.store
|
9
|
-
@store ||= if ENV['REVIEWED_CACHE_REDIS_URL']
|
10
|
-
puts "Reviewed::Cache - connecting to #{ENV['REVIEWED_CACHE_REDIS_URL']}"
|
11
|
-
ActiveSupport::Cache.lookup_store(:redis_store, ENV['REVIEWED_CACHE_REDIS_URL'])
|
12
|
-
else
|
13
|
-
ActiveSupport::Cache.lookup_store(:memory_store)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
data/spec/faraday/cache_spec.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
|
4
|
-
describe Faraday::Cache do
|
5
|
-
|
6
|
-
describe 'call' do
|
7
|
-
|
8
|
-
conn = Faraday.new do |builder|
|
9
|
-
builder.use Faraday::Cache
|
10
|
-
builder.adapter :test, Faraday::Adapter::Test::Stubs.new do |stub|
|
11
|
-
stub.get('/articles') { [200, {}, 'I like turtles'] }
|
12
|
-
stub.get('/products') { [200, {}, 'Weee products'] }
|
13
|
-
stub.get('/kaboom') { [500, {}, 'Kaboom'] }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
conn.headers = { "X-Reviewed-Website" => 'f0000123' }
|
18
|
-
|
19
|
-
it "caches anything that doesn't have skip-cache or reset-cache" do
|
20
|
-
mock_cache_val = double
|
21
|
-
MultiJson.stub(:dump).with(hash_including(:body => 'I like turtles')).and_return(mock_cache_val)
|
22
|
-
Reviewed::Cache.store.should_receive(:write).with("f0000123:/articles", mock_cache_val, anything)
|
23
|
-
conn.get('/articles')
|
24
|
-
end
|
25
|
-
|
26
|
-
it "can cache more than one thing" do
|
27
|
-
mock_cache_val = double
|
28
|
-
MultiJson.stub(:dump => mock_cache_val)
|
29
|
-
Reviewed::Cache.store.should_receive(:write).with("f0000123:/articles", mock_cache_val, anything)
|
30
|
-
Reviewed::Cache.store.should_receive(:write).with("f0000123:/products", mock_cache_val, anything)
|
31
|
-
|
32
|
-
conn.get('/articles')
|
33
|
-
conn.get('/products')
|
34
|
-
end
|
35
|
-
|
36
|
-
it "serves responses from the cache when fresh and does not call the app" do
|
37
|
-
marshalled_response = MultiJson.dump(body: 'old musty response')
|
38
|
-
Reviewed::Cache.store.stub(:exist? => true)
|
39
|
-
Reviewed::Cache.store.should_receive(:read).with("f0000123:/articles").and_return(marshalled_response)
|
40
|
-
resp = conn.get '/articles'
|
41
|
-
resp[:body].should eq("old musty response")
|
42
|
-
end
|
43
|
-
|
44
|
-
it "does not store response when result is 500" do
|
45
|
-
Reviewed::Cache.store.should_not_receive(:write)
|
46
|
-
conn.get('/kaboom')
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "cache busting and skipping" do
|
50
|
-
it "does not cache responses with skip-cache as a query param" do
|
51
|
-
Reviewed::Cache.store.should_not_receive(:read)
|
52
|
-
Reviewed::Cache.store.should_not_receive(:write)
|
53
|
-
conn.get '/articles', {:"skip-cache" => true}
|
54
|
-
end
|
55
|
-
|
56
|
-
it "replaces cached content with app response when reset-cache is a query param" do
|
57
|
-
mock_cache_val = double
|
58
|
-
MultiJson.stub(:dump).and_return(mock_cache_val)
|
59
|
-
Reviewed::Cache.store.should_not_receive(:read)
|
60
|
-
Reviewed::Cache.store.should_receive(:write)
|
61
|
-
conn.get '/articles', {:"reset-cache" => true}
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|