compactor 0.2.4 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,15 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- compactor (0.2.4)
4
+ compactor (0.3.3)
5
+ jruby-openssl (= 0.7.3)
5
6
  mechanize (= 2.4)
7
+ nokogiri (>= 1.5.0, < 1.5.3)
6
8
 
7
9
  GEM
8
10
  remote: http://rubygems.org/
9
11
  specs:
10
- domain_name (0.5.4)
12
+ bouncy-castle-java (1.5.0146.1)
13
+ domain_name (0.5.7)
11
14
  unf (~> 0.0.3)
12
15
  fakeweb (1.3.0)
16
+ jruby-openssl (0.7.3)
17
+ bouncy-castle-java
13
18
  mechanize (2.4)
14
19
  domain_name (~> 0.5, >= 0.5.1)
15
20
  mime-types (~> 1.17, >= 1.17.2)
@@ -24,14 +29,12 @@ GEM
24
29
  metaclass (~> 0.0.1)
25
30
  net-http-digest_auth (1.2.1)
26
31
  net-http-persistent (2.8)
27
- nokogiri (1.5.6)
32
+ nokogiri (1.5.2-java)
28
33
  ntlm-http (0.1.1)
29
34
  rake (10.0.2)
30
35
  rcov (0.9.11)
31
36
  rcov (0.9.11-java)
32
- unf (0.0.5)
33
- unf_ext
34
- unf_ext (0.0.5)
37
+ unf (0.0.5-java)
35
38
  vcr (2.0.1)
36
39
  webrobots (0.0.13)
37
40
 
@@ -2,7 +2,7 @@ module Compactor
2
2
  module Amazon
3
3
  class ScrapedRow
4
4
  def initialize(node, mechanize)
5
- @node = node
5
+ @node = node
6
6
  @mechanize = mechanize
7
7
  end
8
8
 
@@ -16,6 +16,15 @@ module Compactor
16
16
  end
17
17
  end
18
18
 
19
+ def download_report!(validate=false)
20
+ r_type, r_data = download_report
21
+
22
+ # fail if Amazon is saying that total is X but the calculated total is Y
23
+ validate!(r_type, r_data) if validate
24
+
25
+ [r_type, r_data]
26
+ end
27
+
19
28
  def download_report
20
29
  buttons = report_buttons
21
30
  button_index = index_of_button(buttons)
@@ -73,6 +82,24 @@ module Compactor
73
82
 
74
83
  private
75
84
 
85
+ def validate!(r_type, r_data)
86
+ return true unless r_type == :xml # only check xml for now
87
+
88
+ parser = Compactor::Amazon::XmlParser.new(r_data)
89
+ unless parser.valid?
90
+ error_message = \
91
+ "Amazon summary amount different from calculated total amount. {" +
92
+ "type: XML, " +
93
+ "expected total: $#{"%.2f" % parser.expected_total}, " +
94
+ "calculated total: $#{"%.2f" % parser.calculated_total}, " +
95
+ "difference: $#{"%.2f" % (parser.expected_total - parser.calculated_total).abs}" +
96
+ "}"
97
+ raise ReportTotalsMismatch.new(error_message)
98
+ end
99
+
100
+ true
101
+ end
102
+
76
103
  def last_div
77
104
  last_cell.search("div")[-1]
78
105
  end
@@ -5,13 +5,14 @@ module Compactor
5
5
  class AddressParseFailure < StandardError; end
6
6
  class AuthenticationError < StandardError; end
7
7
  class LockedAccountError < StandardError; end
8
+ class MissingReportButtons < StandardError; end
8
9
  class MissingRow < StandardError; end
10
+ class MissingXmlReport < StandardError; end
9
11
  class NoMarketplacesError < StandardError; end
10
12
  class NotProAccountError < StandardError; end
11
- class UnknownReportType < StandardError; end
12
- class MissingXmlReport < StandardError; end
13
- class MissingReportButtons < StandardError; end
14
13
  class ReportLoadingTimeout < StandardError; end
14
+ class ReportTotalsMismatch < StandardError; end
15
+ class UnknownReportType < StandardError; end
15
16
 
16
17
  ATTEMPTS_BEFORE_GIVING_UP = 15 # give up after 20 minutes
17
18
  MARKETPLACE_HOMEPAGE = "https://sellercentral.amazon.com/gp/homepage.html"
@@ -82,26 +83,36 @@ module Compactor
82
83
  get_reports
83
84
  end
84
85
 
85
- def get_orders(order_ids)
86
- orders_hash = {}
87
- order_ids.each do |order_id|
88
- order = {}
89
- @mechanize.get order_detail_url(order_id)
86
+ def buyer_name
87
+ tr = @mechanize.page.search!("//tr[@class='list-row']/td[@class='data-display-field'][text()=\"Contact Buyer:\"]").first.parent
88
+ td = tr.search!("td[2]")
89
+ td.text.strip
90
+ rescue => e
91
+ ""
92
+ end
90
93
 
91
- # Get the buyer name
92
- begin
93
- tr = @mechanize.page.search!("//tr[@class='list-row']/td[@class='data-display-field'][text()=\"Contact Buyer:\"]").first.parent
94
- td = tr.search!("td[2]")
94
+ def shipping_address
95
+ td = @mechanize.page.search!("//tr[@class='list-row']/td[@class='data-display-field']/strong[text()='Shipping Address:']").first.parent
96
+ addr_lines = td.children.map(&:text).reject { |l| l.blank? || l =~ /^Shipping Address/ }
97
+ parse_address_lines!(addr_lines)
98
+ rescue => e
99
+ ""
100
+ end
95
101
 
96
- order["BuyerName"] = td.text.strip
97
- td = @mechanize.page.search!("//tr[@class='list-row']/td[@class='data-display-field']/strong[text()='Shipping Address:']").first.parent
102
+ def payee_details(order_id)
103
+ @mechanize.get order_detail_url(order_id)
104
+ order = {}
105
+ order["BuyerName"] = buyer_name
106
+ order["ShippingAddress"] = shipping_address
98
107
 
99
- addr_lines = td.children.map(&:text).reject { |l| l.blank? || l =~ /^Shipping Address/ }
100
- order["ShippingAddress"] = parse_address_lines!(addr_lines)
101
- rescue Exception => e
102
- end
108
+ order
109
+ rescue => e
110
+ end
103
111
 
104
- orders_hash[order_id] = order
112
+ def get_orders(order_ids)
113
+ orders_hash = {}
114
+ order_ids.each do |order_id|
115
+ orders_hash[order_id] = payee_details(order_id)
105
116
  end
106
117
  orders_hash
107
118
  end
@@ -224,16 +235,8 @@ module Compactor
224
235
  end
225
236
  end
226
237
 
227
- def timeout_fetching_reports(reports_to_watch, reports, count)
228
- if count > ATTEMPTS_BEFORE_GIVING_UP
229
- reports_downloaded = reports.map { |type, reports| reports.size }.inject(:+)
230
- reports_not_downloaded = reports_to_watch.size
231
- total_reports = reports_not_downloaded + reports_downloaded
232
-
233
- true
234
- else
235
- false
236
- end
238
+ def timeout_fetching_reports(count)
239
+ count > ATTEMPTS_BEFORE_GIVING_UP
237
240
  end
238
241
 
239
242
  # Find the report to download from a row, and add it
@@ -241,15 +244,14 @@ module Compactor
241
244
  # that the current page stays the current page.
242
245
  def add_to_collection(reports, row)
243
246
  @mechanize.transact do
244
- report_type, report = row.download_report
247
+ report_type, report = row.download_report!(true) # fail if bad total
245
248
  reports[report_type] ||= []
246
249
  reports[report_type] << report
247
250
  end
248
251
  end
249
252
 
250
253
  def get_reports_to_watch(reports_to_watch, reports, count=0)
251
- return if reports_to_watch.empty? ||
252
- timeout_fetching_reports(reports_to_watch, reports, count)
254
+ return if reports_to_watch.empty? || timeout_fetching_reports(count)
253
255
 
254
256
  rescue_empty_results { @mechanize.get @mechanize.page.uri }
255
257
  reports_to_watch.reject! do |row|
@@ -1,3 +1,3 @@
1
1
  module Compactor
2
- VERSION = "0.2.4"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -0,0 +1,22 @@
1
+ module Compactor
2
+ module Amazon
3
+ class XmlParser
4
+ attr_reader :calculated_total, :expected_total
5
+ def initialize(xml)
6
+ calculate(Nokogiri::XML::Document.parse(xml))
7
+ end
8
+
9
+ def valid?
10
+ expected_total == calculated_total
11
+ end
12
+
13
+ private
14
+
15
+ def calculate(doc)
16
+ @expected_total = doc.xpath("//TotalAmount").text.to_f
17
+ @calculated_total = 0.0
18
+ doc.xpath("//Amount").each { |t| @calculated_total += t.text.to_f }
19
+ end
20
+ end
21
+ end
22
+ end
data/lib/compactor.rb CHANGED
@@ -2,4 +2,5 @@ require "mechanize"
2
2
  require "compactor/extensions"
3
3
  require "compactor/version"
4
4
  require "compactor/scraper"
5
+ require "compactor/xml_parser"
5
6
  require "compactor/scraped_row"
@@ -6,4 +6,82 @@ class ScrapedRowTest < Test::Unit::TestCase
6
6
  Compactor::Amazon::ScrapedRow.any_instance.stubs(:table_rows).returns([])
7
7
  assert_nil Compactor::Amazon::ScrapedRow.new("node", "mechanize").reload
8
8
  end
9
+
10
+ def test_should_fail_if_flagged_to_validate_and_xml_totals_do_not_match
11
+ Compactor::Amazon::ScrapedRow.any_instance.stubs(:download_report).returns([:xml,"<xml/>"])
12
+ Compactor::Amazon::XmlParser.any_instance.stubs(:valid?).returns(false)
13
+
14
+ row = Compactor::Amazon::ScrapedRow.new("node", "mechanize")
15
+ assert_raises Compactor::Amazon::ReportTotalsMismatch do
16
+ row.download_report! true
17
+ end
18
+ end
19
+
20
+ def test_should_not_fail_if_flagged_to_validate_and_xml_totals_do_not_match_and_not_xml
21
+ Compactor::Amazon::ScrapedRow.any_instance.stubs(:download_report).returns([:tsv,"tsv"])
22
+ Compactor::Amazon::XmlParser.any_instance.stubs(:valid?).returns(false)
23
+
24
+ row = Compactor::Amazon::ScrapedRow.new("node", "mechanize")
25
+ assert_nothing_raised do
26
+ row.download_report! true
27
+ end
28
+ end
29
+
30
+ def test_should_not_fail_if_flagged_to_validate_and_xml_totals_match
31
+ Compactor::Amazon::ScrapedRow.any_instance.stubs(:download_report).returns([:xml,"<xml/>"])
32
+ Compactor::Amazon::XmlParser.any_instance.stubs(:valid?).returns(true)
33
+
34
+ row = Compactor::Amazon::ScrapedRow.new("node", "mechanize")
35
+ assert_nothing_raised do
36
+ row.download_report! true
37
+ end
38
+ end
39
+
40
+ def test_should_not_fail_if_not_flagged_to_validate_and_xml_totals_do_not_match
41
+ Compactor::Amazon::ScrapedRow.any_instance.stubs(:download_report).returns([:xml,"<xml/>"])
42
+ Compactor::Amazon::XmlParser.any_instance.stubs(:valid?).returns(false)
43
+
44
+ row = Compactor::Amazon::ScrapedRow.new("node", "mechanize")
45
+ assert_nothing_raised do
46
+ row.download_report!
47
+ end
48
+ end
49
+
50
+ def test_should_not_fail_if_not_flagged_to_validate_and_xml_totals_not_match
51
+ Compactor::Amazon::ScrapedRow.any_instance.stubs(:download_report).returns([:xml,"<xml/>"])
52
+ Compactor::Amazon::XmlParser.any_instance.stubs(:valid?).returns(true)
53
+
54
+ row = Compactor::Amazon::ScrapedRow.new("node", "mechanize")
55
+ assert_nothing_raised do
56
+ row.download_report!
57
+ end
58
+ end
59
+
60
+ def test_should_know_if_the_expected_total_matches_the_calculated_total
61
+ report_data = <<-XML
62
+ <xml>
63
+ <report>
64
+ <TotalAmount>10</TotalAmount>
65
+ <Amount>5</Amount>
66
+ <Amount>5</Amount>
67
+ </report>
68
+ </xml>
69
+ XML
70
+ parser = Compactor::Amazon::XmlParser.new(report_data)
71
+ assert parser.valid?
72
+ end
73
+
74
+ def test_should_know_if_the_expected_total_does_not_match_the_calculated_total
75
+ report_data = <<-XML
76
+ <xml>
77
+ <report>
78
+ <TotalAmount>10</TotalAmount>
79
+ <Amount>5</Amount>
80
+ <Amount>4</Amount>
81
+ </report>
82
+ </xml>
83
+ XML
84
+ parser = Compactor::Amazon::XmlParser.new(report_data)
85
+ assert !parser.valid?
86
+ end
9
87
  end
data/test/scraper_test.rb CHANGED
@@ -2,6 +2,10 @@ require File.dirname(__FILE__) + '/test_helper'
2
2
  require File.dirname(__FILE__) + '/../lib/compactor'
3
3
 
4
4
  class ScraperTest < Test::Unit::TestCase
5
+ def setup
6
+ Compactor::Amazon::XmlParser.any_instance.stubs(:valid?).returns(true)
7
+ end
8
+
5
9
  def test_should_not_find_elements_that_do_not_exist
6
10
  VCR.use_cassette("AmazonReportScraper/with_good_login/find_reports/reports_to_request") do
7
11
  scraper = Compactor::Amazon::ReportScraper.new(:email => "far@far.away", :password => "test")
@@ -76,11 +80,11 @@ class ScraperTest < Test::Unit::TestCase
76
80
 
77
81
  assert_equal({
78
82
  "105-1753716-0471420" => {
79
- "BuyerName" => "Lisa M Strand",
83
+ "BuyerName" => "Lisa M Strand",
80
84
  "ShippingAddress" => {
81
- "street" => "W190S6321 Preston Ln",
82
- "city" => "Muskego",
83
- "state" => "WI",
85
+ "street" => "W190S6321 Preston Ln",
86
+ "city" => "Muskego",
87
+ "state" => "WI",
84
88
  "postalcode" => "53150-8512"
85
89
  }
86
90
  }
metadata CHANGED
@@ -1,116 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: compactor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
- - 0
8
- - 2
9
- - 4
10
- version: 0.2.4
6
+ - 0
7
+ - 3
8
+ - 3
9
+ version: 0.3.3
11
10
  platform: ruby
12
11
  authors:
13
- - Julio Santos
12
+ - Julio Santos
14
13
  autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2013-02-14 00:00:00 Z
17
+ date: 2013-03-06 00:00:00 -08:00
18
+ default_executable:
19
19
  dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: mechanize
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - "="
27
- - !ruby/object:Gem::Version
28
- hash: 11
29
- segments:
30
- - 2
31
- - 4
32
- version: "2.4"
33
- type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rake
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
47
- type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: mocha
51
- prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - "="
56
- - !ruby/object:Gem::Version
57
- hash: 45
58
- segments:
59
- - 0
60
- - 12
61
- - 1
62
- version: 0.12.1
63
- type: :development
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: vcr
67
- prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - ~>
72
- - !ruby/object:Gem::Version
73
- hash: 15
74
- segments:
75
- - 2
76
- - 0
77
- - 0
78
- version: 2.0.0
79
- type: :development
80
- version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
82
- name: fakeweb
83
- prerelease: false
84
- requirement: &id005 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- hash: 3
90
- segments:
91
- - 0
92
- version: "0"
93
- type: :development
94
- version_requirements: *id005
95
- - !ruby/object:Gem::Dependency
96
- name: rcov
97
- prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
99
- none: false
100
- requirements:
101
- - - "="
102
- - !ruby/object:Gem::Version
103
- hash: 45
104
- segments:
105
- - 0
106
- - 9
107
- - 11
108
- version: 0.9.11
109
- type: :development
110
- version_requirements: *id006
20
+ - !ruby/object:Gem::Dependency
21
+ name: mechanize
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 4
30
+ version: "2.4"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: jruby-openssl
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ - 7
43
+ - 3
44
+ version: 0.7.3
45
+ type: :runtime
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
48
+ name: nokogiri
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 1
56
+ - 5
57
+ - 0
58
+ version: 1.5.0
59
+ - - <
60
+ - !ruby/object:Gem::Version
61
+ segments:
62
+ - 1
63
+ - 5
64
+ - 3
65
+ version: 1.5.3
66
+ type: :runtime
67
+ version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
69
+ name: rake
70
+ prerelease: false
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ type: :development
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: mocha
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 0
89
+ - 12
90
+ - 1
91
+ version: 0.12.1
92
+ type: :development
93
+ version_requirements: *id005
94
+ - !ruby/object:Gem::Dependency
95
+ name: vcr
96
+ prerelease: false
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ segments:
102
+ - 2
103
+ - 0
104
+ - 0
105
+ version: 2.0.0
106
+ type: :development
107
+ version_requirements: *id006
108
+ - !ruby/object:Gem::Dependency
109
+ name: fakeweb
110
+ prerelease: false
111
+ requirement: &id007 !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ segments:
116
+ - 0
117
+ version: "0"
118
+ type: :development
119
+ version_requirements: *id007
120
+ - !ruby/object:Gem::Dependency
121
+ name: rcov
122
+ prerelease: false
123
+ requirement: &id008 !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "="
126
+ - !ruby/object:Gem::Version
127
+ segments:
128
+ - 0
129
+ - 9
130
+ - 11
131
+ version: 0.9.11
132
+ type: :development
133
+ version_requirements: *id008
111
134
  description: Scrape Amazon Seller Central
112
135
  email:
113
- - julio@morgane.com
136
+ - julio@morgane.com
114
137
  executables: []
115
138
 
116
139
  extensions: []
@@ -118,40 +141,42 @@ extensions: []
118
141
  extra_rdoc_files: []
119
142
 
120
143
  files:
121
- - .gitignore
122
- - .travis.yml
123
- - Gemfile
124
- - Gemfile.lock
125
- - LICENSE
126
- - README.md
127
- - Rakefile
128
- - compactor-0.2.3.gem
129
- - compactor.gemspec
130
- - lib/compactor.rb
131
- - lib/compactor/extensions.rb
132
- - lib/compactor/scraped_row.rb
133
- - lib/compactor/scraper.rb
134
- - lib/compactor/version.rb
135
- - test/date_extensions_test.rb
136
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_bad_login/raise_error.yml
137
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/multiple_pages.yml
138
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports.yml
139
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports_to_request.yml
140
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/reports_to_request.yml
141
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_balance.yml
142
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders.yml
143
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_big.yml
144
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_logging.yml
145
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_with_po_box.yml
146
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/shipping_address_not_starting_with_number.yml
147
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/find_reports/reports_to_request.yml
148
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/get_marketplaces.yml
149
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_single_marketplaces/get_marketplaces.yml
150
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_locked_account/raise_error.yml
151
- - test/mechanize_extensions_test.rb
152
- - test/scraped_row_test.rb
153
- - test/scraper_test.rb
154
- - test/test_helper.rb
144
+ - .gitignore
145
+ - .travis.yml
146
+ - Gemfile
147
+ - Gemfile.lock
148
+ - LICENSE
149
+ - README.md
150
+ - Rakefile
151
+ - compactor-0.2.3.gem
152
+ - compactor.gemspec
153
+ - lib/compactor.rb
154
+ - lib/compactor/extensions.rb
155
+ - lib/compactor/scraped_row.rb
156
+ - lib/compactor/scraper.rb
157
+ - lib/compactor/version.rb
158
+ - lib/compactor/xml_parser.rb
159
+ - test/date_extensions_test.rb
160
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_bad_login/raise_error.yml
161
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/multiple_pages.yml
162
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports.yml
163
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports_to_request.yml
164
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/reports_to_request.yml
165
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_balance.yml
166
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders.yml
167
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_big.yml
168
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_logging.yml
169
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_with_po_box.yml
170
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/shipping_address_not_starting_with_number.yml
171
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/find_reports/reports_to_request.yml
172
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/get_marketplaces.yml
173
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_single_marketplaces/get_marketplaces.yml
174
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_locked_account/raise_error.yml
175
+ - test/mechanize_extensions_test.rb
176
+ - test/scraped_row_test.rb
177
+ - test/scraper_test.rb
178
+ - test/test_helper.rb
179
+ has_rdoc: true
155
180
  homepage: ""
156
181
  licenses: []
157
182
 
@@ -159,51 +184,46 @@ post_install_message:
159
184
  rdoc_options: []
160
185
 
161
186
  require_paths:
162
- - lib
187
+ - lib
163
188
  required_ruby_version: !ruby/object:Gem::Requirement
164
- none: false
165
189
  requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- hash: 3
169
- segments:
170
- - 0
171
- version: "0"
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ segments:
193
+ - 0
194
+ version: "0"
172
195
  required_rubygems_version: !ruby/object:Gem::Requirement
173
- none: false
174
196
  requirements:
175
- - - ">="
176
- - !ruby/object:Gem::Version
177
- hash: 3
178
- segments:
179
- - 0
180
- version: "0"
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ segments:
200
+ - 0
201
+ version: "0"
181
202
  requirements: []
182
203
 
183
204
  rubyforge_project: compactor
184
- rubygems_version: 1.8.24
205
+ rubygems_version: 1.3.6
185
206
  signing_key:
186
207
  specification_version: 3
187
208
  summary: Scrape Amazon Seller Central
188
209
  test_files:
189
- - test/date_extensions_test.rb
190
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_bad_login/raise_error.yml
191
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/multiple_pages.yml
192
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports.yml
193
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports_to_request.yml
194
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/reports_to_request.yml
195
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_balance.yml
196
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders.yml
197
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_big.yml
198
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_logging.yml
199
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_with_po_box.yml
200
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/shipping_address_not_starting_with_number.yml
201
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/find_reports/reports_to_request.yml
202
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/get_marketplaces.yml
203
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_single_marketplaces/get_marketplaces.yml
204
- - test/fixtures/vcr_cassettes/AmazonReportScraper/with_locked_account/raise_error.yml
205
- - test/mechanize_extensions_test.rb
206
- - test/scraped_row_test.rb
207
- - test/scraper_test.rb
208
- - test/test_helper.rb
209
- has_rdoc:
210
+ - test/date_extensions_test.rb
211
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_bad_login/raise_error.yml
212
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/multiple_pages.yml
213
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports.yml
214
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/no_reports_to_request.yml
215
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/find_reports/reports_to_request.yml
216
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_balance.yml
217
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders.yml
218
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_big.yml
219
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_logging.yml
220
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/get_orders_with_po_box.yml
221
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/shipping_address_not_starting_with_number.yml
222
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/find_reports/reports_to_request.yml
223
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_multiple_marketplaces/get_marketplaces.yml
224
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_good_login/with_single_marketplaces/get_marketplaces.yml
225
+ - test/fixtures/vcr_cassettes/AmazonReportScraper/with_locked_account/raise_error.yml
226
+ - test/mechanize_extensions_test.rb
227
+ - test/scraped_row_test.rb
228
+ - test/scraper_test.rb
229
+ - test/test_helper.rb