mws-feeds 1.0.0 → 1.4.1

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
- SHA1:
3
- metadata.gz: dc59457c39c6a3290ee377beba736e35ed8d5932
4
- data.tar.gz: cfc0cfaf76e3af43cb3c2264d40c408e43423719
2
+ SHA256:
3
+ metadata.gz: 05a1c3ee5e81a0b12637827d7ad2a2426c5631a09033a8430c3001347d32872e
4
+ data.tar.gz: b67a59cd0a6ed6cf05347aafceee4e7fe47be098a752139a72d9bb2c2c885ae5
5
5
  SHA512:
6
- metadata.gz: f0b504576f5a13d91541cc65452562df8b678aba24829d92e68181d12374bb37e96ffd4244df4c3a8243e58f2e06ec79d0647bb8e0f71bfdec97af427701149e
7
- data.tar.gz: 531c61071153641927e33d4d14300287207dcaef6df7c47047d734451f37c27a79d3bae4332f7b51ef1287f0862b3269b25d3022bb283acbbff812cd87c7ddd8
6
+ metadata.gz: aac34803ab266dbd114bd888d5341b18a049a72d8b48a7221a69c360c085b3ae9195d311fbcca01e45a0ab3cb77b0e4e8d429a54415d3b17e9c59257f1eee9eb
7
+ data.tar.gz: 23136309f30dfdef03ed97a04585e6f98ccac05ee025f3ebf701f2273018256379cc608131914fc189c5a3782d028ef9d95e4086822e57317be49a78c8029889
@@ -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,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mws/feeds/entity'
4
+
5
+ module MWS
6
+ module Feeds
7
+ class FeedSubmissionInfo < Entity
8
+ attribute(:feed_submission_id) do
9
+ text_at_xpath('FeedSubmissionId')
10
+ end
11
+
12
+ attribute(:feed_type) do
13
+ text_at_xpath('FeedType')
14
+ end
15
+
16
+ attribute(:status) do
17
+ text_at_xpath('FeedProcessingStatus')
18
+ end
19
+
20
+ attribute(:submitted_at) do
21
+ time_at_xpath('SubmittedDate')
22
+ end
23
+
24
+ attribute(:started_processing_at) do
25
+ time_at_xpath('StartedProcessingDate')
26
+ end
27
+
28
+ attribute(:completed_processing_at) do
29
+ time_at_xpath('CompletedProcessingDate')
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mws/feeds/collection'
4
+
5
+ module MWS
6
+ module Feeds
7
+ class FeedSubmissionList < Collection
8
+ def each
9
+ xpath('FeedSubmissionInfo').each { |node| yield FeedSubmissionInfo.new(node) }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,27 @@
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
+ attribute(:document_transaction_id) do
11
+ integer_at_xpath('DocumentTransactionID')
12
+ end
13
+
14
+ attribute(:status_code) do
15
+ text_at_xpath('StatusCode')
16
+ end
17
+
18
+ def processing_summary
19
+ ProcessingSummary.new(xpath('ProcessingSummary').first, namespace: namespace)
20
+ end
21
+
22
+ def results
23
+ ResultList.new(node, namespace: namespace)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -3,6 +3,9 @@
3
3
  require 'peddler'
4
4
  require 'nokogiri'
5
5
  require 'mws/feeds/feed_submission_count'
6
+ require 'mws/feeds/feed_submission_info'
7
+ require 'mws/feeds/feed_submission_list'
8
+ require 'mws/feeds/feed_submission_result'
6
9
 
7
10
  module MWS
8
11
  module Feeds
@@ -14,13 +17,19 @@ module MWS
14
17
  end
15
18
 
16
19
  def parse
17
- node = find_result_node
20
+ node = find_payload
18
21
 
19
22
  case node.name
20
23
  when /GetFeedSubmissionCount/
21
24
  FeedSubmissionCount.new(node)
25
+ when /SubmitFeedResult/
26
+ FeedSubmissionInfo.new(node.at('FeedSubmissionInfo'))
27
+ when /GetFeedSubmissionListResult/
28
+ FeedSubmissionList.new(node)
29
+ when 'ProcessingReport'
30
+ FeedSubmissionResult.new(node, namespace: nil)
22
31
  else
23
- raise NotImplementedError
32
+ raise NotImplementedError, node.name
24
33
  end
25
34
  end
26
35
 
@@ -28,14 +37,29 @@ module MWS
28
37
  @response.headers
29
38
  end
30
39
 
40
+ def status_code
41
+ @response.status
42
+ end
43
+
44
+ def body
45
+ @response.body
46
+ end
47
+
31
48
  private
32
49
 
33
- def find_result_node
50
+ def find_payload
34
51
  xml = Nokogiri(@response.body)
35
- root = xml.children.first
52
+ find_result_node(xml) || find_processing_report_node(xml)
53
+ end
36
54
 
55
+ def find_result_node(xml)
56
+ root = xml.children.first
37
57
  root.children.find { |node| node.name.include?('Result') }
38
58
  end
59
+
60
+ def find_processing_report_node(xml)
61
+ xml.xpath('//ProcessingReport').first
62
+ end
39
63
  end
40
64
 
41
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.0.0"
5
+ VERSION = "1.4.1"
6
6
  end
7
7
  end
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
 
38
38
  spec.required_ruby_version = '>= 2.3'
39
39
 
40
- spec.add_development_dependency "bundler", "~> 1.17"
40
+ spec.add_development_dependency "bundler", "~> 2.1.4"
41
41
  spec.add_development_dependency "rake", "~> 10.0"
42
42
  spec.add_development_dependency "rspec", "~> 3.0"
43
43
  spec.add_development_dependency 'rubocop'
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.0.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Daugherty
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-13 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: money
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.17'
75
+ version: 2.1.4
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.17'
82
+ version: 2.1.4
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -201,7 +201,13 @@ files:
201
201
  - lib/mws/feeds/document.rb
202
202
  - lib/mws/feeds/entity.rb
203
203
  - lib/mws/feeds/feed_submission_count.rb
204
+ - lib/mws/feeds/feed_submission_info.rb
205
+ - lib/mws/feeds/feed_submission_list.rb
206
+ - lib/mws/feeds/feed_submission_result.rb
204
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
205
211
  - lib/mws/feeds/version.rb
206
212
  - mws-feeds.gemspec
207
213
  homepage: https://github.com/Flowspace-Team/mws-feeds
@@ -211,7 +217,7 @@ metadata:
211
217
  homepage_uri: https://github.com/Flowspace-Team/mws-feeds
212
218
  source_code_uri: https://github.com/Flowspace-Team/mws-feeds
213
219
  changelog_uri: https://github.com/Flowspace-Team/mws-feeds/releases
214
- post_install_message:
220
+ post_install_message:
215
221
  rdoc_options: []
216
222
  require_paths:
217
223
  - lib
@@ -226,9 +232,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
232
  - !ruby/object:Gem::Version
227
233
  version: '0'
228
234
  requirements: []
229
- rubyforge_project:
230
- rubygems_version: 2.6.14.1
231
- signing_key:
235
+ rubygems_version: 3.1.2
236
+ signing_key:
232
237
  specification_version: 4
233
238
  summary: Wraps the Amazon MWS Feeds API
234
239
  test_files: []