mws-feeds 1.3.0 → 1.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 864fbb89159bc4715ad7974e5e6bdbbf2a78dcaed48153c8ea3b7bf3be427812
4
- data.tar.gz: 5f394e3222dc9c9b15e40b35f897b7f407948a56652077e5e6fae8f6d00d87fe
3
+ metadata.gz: eab7a661116c8e8f201ba8c722d17290fb7a343ae9fe00b4167a26d82396ccec
4
+ data.tar.gz: 0b16fb78fab13a03f11e254f324403679cd43d37d8372cb59ba323c1f1fa6d8f
5
5
  SHA512:
6
- metadata.gz: 4e171bd803b9e93a0fb7393ccc5a4e5214520f88f2f6021cc805747ef06258dbde3b9a6e2e9db313b6efc07af2bc23b35afe6974520d1adf0b9f5b975b56cd04
7
- data.tar.gz: c95384bdd62de86c2598cd74a6961a3c43487d3b7a97c378ef4085f549bd61e833dc2d8b71844d47f825244cb52b62cd90c227c009a8510c4bade18aecdf1d0c
6
+ metadata.gz: 10ee8957ce3aa6a5358832dd6ad3f2435957d5ae44db12be12fe626a5677bae7349738cf22f330049c387c38e2a6baab9e2beba3bbcad2228c23b996c45baa39
7
+ data.tar.gz: aa41d8a1cafa7603ea28d283b200d1b253761f84005ef1747c9f50afe586ae59865f3cba0be34327d9e0cbc92dcade97deae2a64136822684cfcf91595344b58
@@ -6,4 +6,4 @@ rvm:
6
6
  - 2.4.4
7
7
  - 2.5.3
8
8
  - 2.6.1
9
- before_install: gem install bundler -v 1.17.1
9
+ before_install: gem install bundler -v 2.1.4
@@ -4,9 +4,11 @@ module MWS
4
4
  module Feeds
5
5
  class Document
6
6
  attr_reader :node
7
+ attr_reader :namespace
7
8
 
8
- def initialize(node)
9
+ def initialize(node, namespace: 'xmlns')
9
10
  @node = node
11
+ @namespace = namespace
10
12
  end
11
13
 
12
14
  def xpath(path)
@@ -16,6 +18,8 @@ module MWS
16
18
  private
17
19
 
18
20
  def add_namespace(path)
21
+ return path if namespace.nil?
22
+
19
23
  path.
20
24
  split('/').
21
25
  map { |attr| "xmlns:#{attr}" }.
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mws/feeds/entity'
4
+ require 'mws/feeds/processing_summary'
5
+ require 'mws/feeds/result_list'
6
+
7
+ module MWS
8
+ module Feeds
9
+ class FeedSubmissionResult < Entity
10
+ def processing_summary
11
+ ProcessingSummary.new(xpath('ProcessingSummary').first, namespace: namespace)
12
+ end
13
+
14
+ def results
15
+ ResultList.new(node, namespace: namespace)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -5,6 +5,7 @@ require 'nokogiri'
5
5
  require 'mws/feeds/feed_submission_count'
6
6
  require 'mws/feeds/feed_submission_info'
7
7
  require 'mws/feeds/feed_submission_list'
8
+ require 'mws/feeds/feed_submission_result'
8
9
 
9
10
  module MWS
10
11
  module Feeds
@@ -16,7 +17,7 @@ module MWS
16
17
  end
17
18
 
18
19
  def parse
19
- node = find_result_node
20
+ node = find_payload
20
21
 
21
22
  case node.name
22
23
  when /GetFeedSubmissionCount/
@@ -25,6 +26,8 @@ module MWS
25
26
  FeedSubmissionInfo.new(node.at('FeedSubmissionInfo'))
26
27
  when /GetFeedSubmissionListResult/
27
28
  FeedSubmissionList.new(node)
29
+ when 'ProcessingReport'
30
+ FeedSubmissionResult.new(node, namespace: nil)
28
31
  else
29
32
  raise NotImplementedError, node.name
30
33
  end
@@ -44,12 +47,19 @@ module MWS
44
47
 
45
48
  private
46
49
 
47
- def find_result_node
50
+ def find_payload
48
51
  xml = Nokogiri(@response.body)
49
- root = xml.children.first
52
+ find_result_node(xml) || find_processing_report_node(xml)
53
+ end
50
54
 
55
+ def find_result_node(xml)
56
+ root = xml.children.first
51
57
  root.children.find { |node| node.name.include?('Result') }
52
58
  end
59
+
60
+ def find_processing_report_node(xml)
61
+ xml.xpath('//ProcessingReport').first
62
+ end
53
63
  end
54
64
 
55
65
  # Override Peddler's default Parser.
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mws/feeds/entity'
4
+
5
+ module MWS
6
+ module Feeds
7
+ class ProcessingSummary < Entity
8
+ attribute(:messages_processed) do
9
+ integer_at_xpath('MessagesProcessed')
10
+ end
11
+
12
+ attribute(:messages_successful) do
13
+ integer_at_xpath('MessagesSuccessful')
14
+ end
15
+
16
+ attribute(:messages_with_error) do
17
+ integer_at_xpath('MessagesWithError')
18
+ end
19
+
20
+ attribute(:messages_with_warning) do
21
+ integer_at_xpath('MessagesWithWarning')
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mws/feeds/entity'
4
+
5
+ module MWS
6
+ module Feeds
7
+ class Result < Entity
8
+ attribute(:message_id) do
9
+ integer_at_xpath('MessageID')
10
+ end
11
+
12
+ attribute(:result_code) do
13
+ text_at_xpath('ResultCode')
14
+ end
15
+
16
+ attribute(:result_message_code) do
17
+ integer_at_xpath('ResultMessageCode')
18
+ end
19
+
20
+ attribute(:result_description) do
21
+ text_at_xpath('ResultDescription')
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mws/feeds/collection'
4
+ require 'mws/feeds/result'
5
+
6
+ module MWS
7
+ module Feeds
8
+ class ResultList < Collection
9
+ def each
10
+ xpath('Result').each { |node| yield Result.new(node, namespace: namespace) }
11
+ end
12
+ end
13
+ end
14
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Mws
4
4
  module Feeds
5
- VERSION = "1.3.0"
5
+ VERSION = "1.4.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mws-feeds
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Daugherty
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-22 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: money
@@ -203,7 +203,11 @@ files:
203
203
  - lib/mws/feeds/feed_submission_count.rb
204
204
  - lib/mws/feeds/feed_submission_info.rb
205
205
  - lib/mws/feeds/feed_submission_list.rb
206
+ - lib/mws/feeds/feed_submission_result.rb
206
207
  - lib/mws/feeds/parser.rb
208
+ - lib/mws/feeds/processing_summary.rb
209
+ - lib/mws/feeds/result.rb
210
+ - lib/mws/feeds/result_list.rb
207
211
  - lib/mws/feeds/version.rb
208
212
  - mws-feeds.gemspec
209
213
  homepage: https://github.com/Flowspace-Team/mws-feeds