mws-feeds 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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