compactor 0.2.4 → 0.3.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/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