fassbinder 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/.gitignore +1 -1
- data/fassbinder.gemspec +1 -1
- data/lib/fassbinder/request.rb +1 -1
- data/lib/fassbinder/{response_wrapper.rb → response.rb} +5 -8
- data/lib/fassbinder/version.rb +1 -1
- data/lib/fassbinder.rb +5 -3
- data/spec/fassbinder/response_spec.rb +49 -0
- metadata +6 -7
- data/lib/fassbinder/item.rb +0 -4
- data/spec/fassbinder/response_wrapper_spec.rb +0 -49
data/.gitignore
CHANGED
data/fassbinder.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
22
|
-
s.add_dependency('kosher', '~> 0.2.
|
22
|
+
s.add_dependency('kosher', '~> 0.2.8')
|
23
23
|
s.add_dependency('sucker', '~> 1.3.1')
|
24
24
|
s.add_development_dependency('rspec', '~> 2.5.0')
|
25
25
|
s.add_development_dependency('ruby-debug19', '~> 0.11.6')
|
data/lib/fassbinder/request.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fassbinder
|
2
|
-
class
|
2
|
+
class Response
|
3
3
|
def initialize(response, locale)
|
4
4
|
raise InvalidResponseError unless response.valid?
|
5
5
|
|
@@ -9,12 +9,13 @@ module Fassbinder
|
|
9
9
|
|
10
10
|
# And I don't believe that melodramatic feelings are laughable -
|
11
11
|
# they should be taken absolutely seriously.
|
12
|
-
def
|
12
|
+
def snapshots
|
13
13
|
@response.map('Item') do |doc|
|
14
|
-
|
14
|
+
Kosher::Snapshot.new(
|
15
|
+
nil,
|
15
16
|
doc['ASIN'],
|
16
|
-
doc['Offers']['TotalOffers'].to_i,
|
17
17
|
doc['SalesRank'].to_i,
|
18
|
+
doc['Offers']['TotalOffers'].to_i,
|
18
19
|
[doc['Offers']['Offer']].flatten.compact.map do |doc|
|
19
20
|
if doc['OfferListing']['Price']['CurrencyCode'] == 'JPY'
|
20
21
|
doc['OfferListing']['Price']['Amount'] = doc['OfferListing']['Price']['Amount'].to_i * 100
|
@@ -60,9 +61,5 @@ module Fassbinder
|
|
60
61
|
error['Message'].scan(/[0-9A-Z]{10}/).first rescue nil
|
61
62
|
end.compact
|
62
63
|
end
|
63
|
-
|
64
|
-
def response
|
65
|
-
@response
|
66
|
-
end
|
67
64
|
end
|
68
65
|
end
|
data/lib/fassbinder/version.rb
CHANGED
data/lib/fassbinder.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'kosher'
|
2
2
|
require 'sucker'
|
3
3
|
|
4
|
-
require 'fassbinder/errors'
|
5
|
-
require 'fassbinder/item'
|
6
4
|
require 'fassbinder/request'
|
7
|
-
require 'fassbinder/
|
5
|
+
require 'fassbinder/response'
|
6
|
+
|
7
|
+
module Fassbinder
|
8
|
+
class InvalidResponseError < StandardError; end
|
9
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Fassbinder
|
4
|
+
describe Response do
|
5
|
+
use_vcr_cassette 'batch-request'
|
6
|
+
|
7
|
+
let(:asins) do
|
8
|
+
# The last ASIN does not exist.
|
9
|
+
%w{
|
10
|
+
0816614024 0143105825 0485113600 0816616779 0942299078
|
11
|
+
0816614008 144006654X 0486400360 0486417670 087220474X
|
12
|
+
0486454398 0268018359 1604246014 184467598X 0312427182
|
13
|
+
1844674282 0745640974 0745646441 0826489540 2081232191 }
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:response) do
|
17
|
+
request = Request.new(credentials)
|
18
|
+
request.locale = :us
|
19
|
+
request.batchify(asins)
|
20
|
+
request.get
|
21
|
+
end
|
22
|
+
|
23
|
+
describe ".new" do
|
24
|
+
it "raises an error if response is not valid" do
|
25
|
+
response = mock('Response')
|
26
|
+
response.stub!(:valid?).and_return(false)
|
27
|
+
|
28
|
+
expect do
|
29
|
+
Response.new(response, :us)
|
30
|
+
end.to raise_error InvalidResponseError
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#snapshots" do
|
35
|
+
it "should return snapshots" do
|
36
|
+
debugger
|
37
|
+
response.snapshots.count.should eql 19
|
38
|
+
response.snapshots.first.should be_a Kosher::Snapshot
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#errors" do
|
43
|
+
it "should return ASINs that are not found" do
|
44
|
+
response.errors.count.should eql 1
|
45
|
+
response.errors.first.should eql '2081232191'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: fassbinder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Paper Cavalier
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-10 00:00:00 +00:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.2.
|
24
|
+
version: 0.2.8
|
25
25
|
type: :runtime
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -96,12 +96,11 @@ files:
|
|
96
96
|
- fassbinder.gemspec
|
97
97
|
- lib/fassbinder.rb
|
98
98
|
- lib/fassbinder/errors.rb
|
99
|
-
- lib/fassbinder/item.rb
|
100
99
|
- lib/fassbinder/request.rb
|
101
|
-
- lib/fassbinder/
|
100
|
+
- lib/fassbinder/response.rb
|
102
101
|
- lib/fassbinder/version.rb
|
103
102
|
- spec/fassbinder/request_spec.rb
|
104
|
-
- spec/fassbinder/
|
103
|
+
- spec/fassbinder/response_spec.rb
|
105
104
|
- spec/spec_helper.rb
|
106
105
|
- spec/support/credentials.rb
|
107
106
|
- spec/support/vcr.rb
|
@@ -135,7 +134,7 @@ specification_version: 3
|
|
135
134
|
summary: Wraps Amazon in a loving embrace.
|
136
135
|
test_files:
|
137
136
|
- spec/fassbinder/request_spec.rb
|
138
|
-
- spec/fassbinder/
|
137
|
+
- spec/fassbinder/response_spec.rb
|
139
138
|
- spec/spec_helper.rb
|
140
139
|
- spec/support/credentials.rb
|
141
140
|
- spec/support/vcr.rb
|
data/lib/fassbinder/item.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Fassbinder
|
4
|
-
describe ResponseWrapper do
|
5
|
-
describe ".new" do
|
6
|
-
it "raises an error if response is not valid" do
|
7
|
-
response = mock('Response')
|
8
|
-
response.stub!(:valid?).and_return(false)
|
9
|
-
|
10
|
-
expect do
|
11
|
-
ResponseWrapper.new(response, :us)
|
12
|
-
end.to raise_error InvalidResponseError
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#books" do
|
17
|
-
use_vcr_cassette 'batch-request'
|
18
|
-
|
19
|
-
let(:asins) do
|
20
|
-
# The last ASIN does not exist.
|
21
|
-
%w{
|
22
|
-
0816614024 0143105825 0485113600 0816616779 0942299078
|
23
|
-
0816614008 144006654X 0486400360 0486417670 087220474X
|
24
|
-
0486454398 0268018359 1604246014 184467598X 0312427182
|
25
|
-
1844674282 0745640974 0745646441 0826489540 2081232191 }
|
26
|
-
end
|
27
|
-
|
28
|
-
let(:response_wrapper) do
|
29
|
-
request = Request.new(credentials)
|
30
|
-
request.locale = :us
|
31
|
-
request.batchify(asins)
|
32
|
-
request.get
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should return found books" do
|
36
|
-
debugger
|
37
|
-
response_wrapper.items.count.should eql 19
|
38
|
-
response_wrapper.items.first.should be_a Book
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe "#errors" do
|
43
|
-
it "should return ASINs that are not found" do
|
44
|
-
algorithm.errors.count.should eql 1
|
45
|
-
algorithm.errors.first.should eql '2081232191'
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|