mws-feeds 1.0.0 → 1.4.1

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
- 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: []