solidus_bactracs 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gem_release.yml +2 -2
  3. data/.github/CODEOWNERS +54 -0
  4. data/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +3 -0
  5. data/.github/workflows/release.yml +50 -0
  6. data/.gitignore +0 -2
  7. data/.rubocop_todo.yml +3 -3
  8. data/.ruby-version +1 -0
  9. data/.tool-versions +1 -0
  10. data/CHANGELOG.md +7 -1
  11. data/PULL_REQUEST_TEMPLATE.md +3 -0
  12. data/README.md +5 -5
  13. data/app/assets/javascripts/spree/backend/{solidus_backtracs.js → solidus_bactracs.js} +0 -0
  14. data/app/assets/javascripts/spree/frontend/{solidus_backtracs.js → solidus_bactracs.js} +0 -0
  15. data/app/assets/stylesheets/spree/backend/{solidus_backtracs.css → solidus_bactracs.css} +0 -0
  16. data/app/assets/stylesheets/spree/frontend/{solidus_backtracs.css → solidus_bactracs.css} +0 -0
  17. data/app/controllers/spree/{backtracs_controller.rb → bactracs_controller.rb} +9 -9
  18. data/app/decorators/models/{solidus_backtracs → solidus_bactracs}/spree/shipment_decorator.rb +5 -5
  19. data/app/helpers/{solidus_backtracs → solidus_bactracs}/export_helper.rb +2 -2
  20. data/app/jobs/{solidus_backtracs → solidus_bactracs}/api/schedule_shipment_syncs_job.rb +7 -7
  21. data/app/jobs/{solidus_backtracs → solidus_bactracs}/api/sync_shipment_job.rb +1 -1
  22. data/app/jobs/{solidus_backtracs → solidus_bactracs}/api/sync_shipments_job.rb +3 -3
  23. data/app/queries/{solidus_backtracs → solidus_bactracs}/shipment/between_query.rb +1 -1
  24. data/app/queries/{solidus_backtracs → solidus_bactracs}/shipment/exportable_query.rb +3 -3
  25. data/app/queries/{solidus_backtracs → solidus_bactracs}/shipment/pending_api_sync_query.rb +6 -6
  26. data/app/views/spree/{backtracs → bactracs}/export.xml.builder +5 -5
  27. data/bin/console +1 -1
  28. data/bin/rails-engine +1 -1
  29. data/bin/sandbox +1 -1
  30. data/config/routes.rb +2 -2
  31. data/db/migrate/{20210220093010_add_backtracs_api_sync_fields.rb → 20210220093010_add_bactracs_api_sync_fields.rb} +2 -2
  32. data/lib/generators/{solidus_backtracs → solidus_bactracs}/install/install_generator.rb +3 -3
  33. data/lib/generators/{solidus_backtracs → solidus_bactracs}/install/templates/initializer.rb +42 -12
  34. data/lib/solidus_backtracs/version.rb +1 -1
  35. data/lib/{solidus_backtracs → solidus_bactracs}/api/batch_syncer.rb +5 -5
  36. data/lib/{solidus_backtracs → solidus_bactracs}/api/client.rb +4 -4
  37. data/lib/{solidus_backtracs → solidus_bactracs}/api/rate_limited_error.rb +1 -1
  38. data/lib/{solidus_backtracs → solidus_bactracs}/api/request_error.rb +1 -1
  39. data/lib/solidus_bactracs/api/request_runner.rb +135 -0
  40. data/lib/{solidus_backtracs → solidus_bactracs}/api/shipment_serializer.rb +28 -27
  41. data/lib/{solidus_backtracs → solidus_bactracs}/api/threshold_verifier.rb +6 -6
  42. data/lib/{solidus_backtracs → solidus_bactracs}/configuration.rb +4 -4
  43. data/lib/{solidus_backtracs → solidus_bactracs}/engine.rb +2 -2
  44. data/lib/{solidus_backtracs → solidus_bactracs}/errors.rb +1 -1
  45. data/lib/{solidus_backtracs → solidus_bactracs}/shipment_notice.rb +2 -2
  46. data/lib/{solidus_backtracs → solidus_bactracs}/testing_support/factories.rb +0 -0
  47. data/lib/solidus_bactracs/version.rb +5 -0
  48. data/lib/solidus_bactracs.rb +16 -0
  49. data/solidus_bactracs.gemspec +3 -2
  50. data/spec/controllers/spree/{backtracs_controller_spec.rb → bactracs_controller_spec.rb} +9 -9
  51. data/spec/fixtures/{backtracs_xml_schema.xsd → bactracs_xml_schema.xsd} +0 -0
  52. data/spec/jobs/{solidus_backtracs → solidus_bactracs}/api/schedule_shipment_syncs_job_spec.rb +5 -5
  53. data/spec/jobs/{solidus_backtracs → solidus_bactracs}/api/sync_shipments_job_spec.rb +10 -10
  54. data/spec/lib/{solidus_backtracs → solidus_bactracs}/api/batch_syncer_spec.rb +28 -28
  55. data/spec/lib/{solidus_backtracs → solidus_bactracs}/api/client_spec.rb +10 -10
  56. data/spec/lib/{solidus_backtracs → solidus_bactracs}/api/rate_limited_error_spec.rb +1 -1
  57. data/spec/lib/{solidus_backtracs → solidus_bactracs}/api/request_error_spec.rb +1 -1
  58. data/spec/lib/{solidus_backtracs → solidus_bactracs}/api/request_runner_spec.rb +3 -3
  59. data/spec/lib/{solidus_backtracs → solidus_bactracs}/api/shipment_serializer_spec.rb +1 -1
  60. data/spec/lib/{solidus_backtracs → solidus_bactracs}/api/threshold_verifier_spec.rb +9 -9
  61. data/spec/lib/{solidus_backtracs → solidus_bactracs}/shipment_notice_spec.rb +4 -4
  62. data/spec/lib/solidus_bactracs_spec.rb +9 -0
  63. data/spec/models/spree/shipment_spec.rb +2 -2
  64. data/spec/queries/{solidus_backtracs → solidus_bactracs}/shipment/between_query_spec.rb +1 -1
  65. data/spec/queries/{solidus_backtracs → solidus_bactracs}/shipment/exportable_query_spec.rb +1 -1
  66. data/spec/queries/{solidus_backtracs → solidus_bactracs}/shipment/pending_api_sync_query_spec.rb +4 -4
  67. data/spec/spec_helper.rb +2 -2
  68. data/spec/support/configuration_helper.rb +1 -1
  69. metadata +72 -64
  70. data/lib/solidus_backtracs/api/request_runner.rb +0 -109
  71. data/lib/solidus_backtracs.rb +0 -16
  72. data/spec/lib/solidus_backtracs_spec.rb +0 -9
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_bactracs
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zeryab Ali
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-06-30 00:00:00.000000000 Z
12
+ date: 2022-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -124,31 +124,37 @@ files:
124
124
  - ".bundle/config"
125
125
  - ".circleci/config.yml"
126
126
  - ".gem_release.yml"
127
+ - ".github/CODEOWNERS"
128
+ - ".github/PULL_REQUEST_TEMPLATE/pull_request_template.md"
127
129
  - ".github/stale.yml"
130
+ - ".github/workflows/release.yml"
128
131
  - ".github_changelog_generator"
129
132
  - ".gitignore"
130
133
  - ".rspec"
131
134
  - ".rubocop.yml"
132
135
  - ".rubocop_todo.yml"
136
+ - ".ruby-version"
137
+ - ".tool-versions"
133
138
  - CHANGELOG.md
134
139
  - Gemfile
135
140
  - LICENSE
141
+ - PULL_REQUEST_TEMPLATE.md
136
142
  - README.md
137
143
  - Rakefile
138
- - app/assets/javascripts/spree/backend/solidus_backtracs.js
139
- - app/assets/javascripts/spree/frontend/solidus_backtracs.js
140
- - app/assets/stylesheets/spree/backend/solidus_backtracs.css
141
- - app/assets/stylesheets/spree/frontend/solidus_backtracs.css
142
- - app/controllers/spree/backtracs_controller.rb
143
- - app/decorators/models/solidus_backtracs/spree/shipment_decorator.rb
144
- - app/helpers/solidus_backtracs/export_helper.rb
145
- - app/jobs/solidus_backtracs/api/schedule_shipment_syncs_job.rb
146
- - app/jobs/solidus_backtracs/api/sync_shipment_job.rb
147
- - app/jobs/solidus_backtracs/api/sync_shipments_job.rb
148
- - app/queries/solidus_backtracs/shipment/between_query.rb
149
- - app/queries/solidus_backtracs/shipment/exportable_query.rb
150
- - app/queries/solidus_backtracs/shipment/pending_api_sync_query.rb
151
- - app/views/spree/backtracs/export.xml.builder
144
+ - app/assets/javascripts/spree/backend/solidus_bactracs.js
145
+ - app/assets/javascripts/spree/frontend/solidus_bactracs.js
146
+ - app/assets/stylesheets/spree/backend/solidus_bactracs.css
147
+ - app/assets/stylesheets/spree/frontend/solidus_bactracs.css
148
+ - app/controllers/spree/bactracs_controller.rb
149
+ - app/decorators/models/solidus_bactracs/spree/shipment_decorator.rb
150
+ - app/helpers/solidus_bactracs/export_helper.rb
151
+ - app/jobs/solidus_bactracs/api/schedule_shipment_syncs_job.rb
152
+ - app/jobs/solidus_bactracs/api/sync_shipment_job.rb
153
+ - app/jobs/solidus_bactracs/api/sync_shipments_job.rb
154
+ - app/queries/solidus_bactracs/shipment/between_query.rb
155
+ - app/queries/solidus_bactracs/shipment/exportable_query.rb
156
+ - app/queries/solidus_bactracs/shipment/pending_api_sync_query.rb
157
+ - app/views/spree/bactracs/export.xml.builder
152
158
  - bin/console
153
159
  - bin/rails
154
160
  - bin/rails-engine
@@ -158,41 +164,42 @@ files:
158
164
  - bin/setup
159
165
  - config/locales/en.yml
160
166
  - config/routes.rb
161
- - db/migrate/20210220093010_add_backtracs_api_sync_fields.rb
162
- - lib/generators/solidus_backtracs/install/install_generator.rb
163
- - lib/generators/solidus_backtracs/install/templates/initializer.rb
164
- - lib/solidus_backtracs.rb
165
- - lib/solidus_backtracs/api/batch_syncer.rb
166
- - lib/solidus_backtracs/api/client.rb
167
- - lib/solidus_backtracs/api/rate_limited_error.rb
168
- - lib/solidus_backtracs/api/request_error.rb
169
- - lib/solidus_backtracs/api/request_runner.rb
170
- - lib/solidus_backtracs/api/shipment_serializer.rb
171
- - lib/solidus_backtracs/api/threshold_verifier.rb
172
- - lib/solidus_backtracs/configuration.rb
173
- - lib/solidus_backtracs/engine.rb
174
- - lib/solidus_backtracs/errors.rb
175
- - lib/solidus_backtracs/shipment_notice.rb
176
- - lib/solidus_backtracs/testing_support/factories.rb
167
+ - db/migrate/20210220093010_add_bactracs_api_sync_fields.rb
168
+ - lib/generators/solidus_bactracs/install/install_generator.rb
169
+ - lib/generators/solidus_bactracs/install/templates/initializer.rb
177
170
  - lib/solidus_backtracs/version.rb
171
+ - lib/solidus_bactracs.rb
172
+ - lib/solidus_bactracs/api/batch_syncer.rb
173
+ - lib/solidus_bactracs/api/client.rb
174
+ - lib/solidus_bactracs/api/rate_limited_error.rb
175
+ - lib/solidus_bactracs/api/request_error.rb
176
+ - lib/solidus_bactracs/api/request_runner.rb
177
+ - lib/solidus_bactracs/api/shipment_serializer.rb
178
+ - lib/solidus_bactracs/api/threshold_verifier.rb
179
+ - lib/solidus_bactracs/configuration.rb
180
+ - lib/solidus_bactracs/engine.rb
181
+ - lib/solidus_bactracs/errors.rb
182
+ - lib/solidus_bactracs/shipment_notice.rb
183
+ - lib/solidus_bactracs/testing_support/factories.rb
184
+ - lib/solidus_bactracs/version.rb
178
185
  - solidus_bactracs.gemspec
179
- - spec/controllers/spree/backtracs_controller_spec.rb
180
- - spec/fixtures/backtracs_xml_schema.xsd
181
- - spec/jobs/solidus_backtracs/api/schedule_shipment_syncs_job_spec.rb
182
- - spec/jobs/solidus_backtracs/api/sync_shipments_job_spec.rb
183
- - spec/lib/solidus_backtracs/api/batch_syncer_spec.rb
184
- - spec/lib/solidus_backtracs/api/client_spec.rb
185
- - spec/lib/solidus_backtracs/api/rate_limited_error_spec.rb
186
- - spec/lib/solidus_backtracs/api/request_error_spec.rb
187
- - spec/lib/solidus_backtracs/api/request_runner_spec.rb
188
- - spec/lib/solidus_backtracs/api/shipment_serializer_spec.rb
189
- - spec/lib/solidus_backtracs/api/threshold_verifier_spec.rb
190
- - spec/lib/solidus_backtracs/shipment_notice_spec.rb
191
- - spec/lib/solidus_backtracs_spec.rb
186
+ - spec/controllers/spree/bactracs_controller_spec.rb
187
+ - spec/fixtures/bactracs_xml_schema.xsd
188
+ - spec/jobs/solidus_bactracs/api/schedule_shipment_syncs_job_spec.rb
189
+ - spec/jobs/solidus_bactracs/api/sync_shipments_job_spec.rb
190
+ - spec/lib/solidus_bactracs/api/batch_syncer_spec.rb
191
+ - spec/lib/solidus_bactracs/api/client_spec.rb
192
+ - spec/lib/solidus_bactracs/api/rate_limited_error_spec.rb
193
+ - spec/lib/solidus_bactracs/api/request_error_spec.rb
194
+ - spec/lib/solidus_bactracs/api/request_runner_spec.rb
195
+ - spec/lib/solidus_bactracs/api/shipment_serializer_spec.rb
196
+ - spec/lib/solidus_bactracs/api/threshold_verifier_spec.rb
197
+ - spec/lib/solidus_bactracs/shipment_notice_spec.rb
198
+ - spec/lib/solidus_bactracs_spec.rb
192
199
  - spec/models/spree/shipment_spec.rb
193
- - spec/queries/solidus_backtracs/shipment/between_query_spec.rb
194
- - spec/queries/solidus_backtracs/shipment/exportable_query_spec.rb
195
- - spec/queries/solidus_backtracs/shipment/pending_api_sync_query_spec.rb
200
+ - spec/queries/solidus_bactracs/shipment/between_query_spec.rb
201
+ - spec/queries/solidus_bactracs/shipment/exportable_query_spec.rb
202
+ - spec/queries/solidus_bactracs/shipment/pending_api_sync_query_spec.rb
196
203
  - spec/spec_helper.rb
197
204
  - spec/support/configuration_helper.rb
198
205
  - spec/support/controllers.rb
@@ -205,6 +212,7 @@ metadata:
205
212
  homepage_uri: https://github.com/suvie-eng/solidus_bactracs
206
213
  source_code_uri: https://github.com/suvie-eng/solidus_bactracs/
207
214
  changelog_uri: https://github.com/suvie-eng/solidus_bactracs/blob/master/CHANGELOG.md
215
+ allowed_push_host: https://rubygems.org
208
216
  post_install_message:
209
217
  rdoc_options: []
210
218
  require_paths:
@@ -225,23 +233,23 @@ signing_key:
225
233
  specification_version: 4
226
234
  summary: A Solidus extension for integrating the Bactracs API.
227
235
  test_files:
228
- - spec/controllers/spree/backtracs_controller_spec.rb
229
- - spec/fixtures/backtracs_xml_schema.xsd
230
- - spec/jobs/solidus_backtracs/api/schedule_shipment_syncs_job_spec.rb
231
- - spec/jobs/solidus_backtracs/api/sync_shipments_job_spec.rb
232
- - spec/lib/solidus_backtracs/api/batch_syncer_spec.rb
233
- - spec/lib/solidus_backtracs/api/client_spec.rb
234
- - spec/lib/solidus_backtracs/api/rate_limited_error_spec.rb
235
- - spec/lib/solidus_backtracs/api/request_error_spec.rb
236
- - spec/lib/solidus_backtracs/api/request_runner_spec.rb
237
- - spec/lib/solidus_backtracs/api/shipment_serializer_spec.rb
238
- - spec/lib/solidus_backtracs/api/threshold_verifier_spec.rb
239
- - spec/lib/solidus_backtracs/shipment_notice_spec.rb
240
- - spec/lib/solidus_backtracs_spec.rb
236
+ - spec/controllers/spree/bactracs_controller_spec.rb
237
+ - spec/fixtures/bactracs_xml_schema.xsd
238
+ - spec/jobs/solidus_bactracs/api/schedule_shipment_syncs_job_spec.rb
239
+ - spec/jobs/solidus_bactracs/api/sync_shipments_job_spec.rb
240
+ - spec/lib/solidus_bactracs/api/batch_syncer_spec.rb
241
+ - spec/lib/solidus_bactracs/api/client_spec.rb
242
+ - spec/lib/solidus_bactracs/api/rate_limited_error_spec.rb
243
+ - spec/lib/solidus_bactracs/api/request_error_spec.rb
244
+ - spec/lib/solidus_bactracs/api/request_runner_spec.rb
245
+ - spec/lib/solidus_bactracs/api/shipment_serializer_spec.rb
246
+ - spec/lib/solidus_bactracs/api/threshold_verifier_spec.rb
247
+ - spec/lib/solidus_bactracs/shipment_notice_spec.rb
248
+ - spec/lib/solidus_bactracs_spec.rb
241
249
  - spec/models/spree/shipment_spec.rb
242
- - spec/queries/solidus_backtracs/shipment/between_query_spec.rb
243
- - spec/queries/solidus_backtracs/shipment/exportable_query_spec.rb
244
- - spec/queries/solidus_backtracs/shipment/pending_api_sync_query_spec.rb
250
+ - spec/queries/solidus_bactracs/shipment/between_query_spec.rb
251
+ - spec/queries/solidus_bactracs/shipment/exportable_query_spec.rb
252
+ - spec/queries/solidus_bactracs/shipment/pending_api_sync_query_spec.rb
245
253
  - spec/spec_helper.rb
246
254
  - spec/support/configuration_helper.rb
247
255
  - spec/support/controllers.rb
@@ -1,109 +0,0 @@
1
- # frozen_string_literal: true
2
- require "uri"
3
- require "net/http"
4
-
5
- module SolidusBacktracs
6
- module Api
7
- class RequestRunner
8
-
9
- def initialize
10
- @username = SolidusBacktracs.configuration.authentication_username
11
- @password = SolidusBacktracs.configuration.authentication_password
12
- @api_base = SolidusBacktracs.configuration.api_base
13
- @retries = SolidusBacktracs.configuration.api_retries
14
- end
15
-
16
- def authenticated_call(method: nil, path: nil, serializer: nil, shipment: nil, count: 0)
17
- if count <= @retries
18
- unless @username.present? || @password.present? || @api_base.present?
19
- raise "Credentials not defined for Authentication"
20
- end
21
-
22
- @response = Rails.cache.fetch("backtracks_cache_key", expires_in: 1.hour, skip_nil: true) do
23
- self.call(method: :get, path: "/webservices/user/Authentication.asmx/Login?sUserName=#{@username}&sPassword=#{@password}")
24
- end
25
-
26
- raise RequestError.from_response(@response) unless @response # just try again for @retries?
27
- authenticted = parse_authentication_response(@response, "Result")
28
- raise RequestError.from_response(@response) if authenticted == "false"
29
- sguid = parse_authentication_response(@response, "Message")
30
-
31
- if authenticted == 'false'
32
- clear_cache
33
- raise "User Not Authenticated"
34
- else
35
- sguid = parse_authentication_response(@response, "Message")
36
- params = serializer.call(shipment, sguid)
37
-
38
- rma_response = call(method: :post, path: path, params: params)
39
- unless parse_rma_creation_response(rma_response) == 'true'
40
- clear_cache
41
- count += 1
42
- self.authenticated_call(method: :post, path: '/webservices/rma/rmaservice.asmx', serializer: serializer, shipment: shipment, count: count)
43
- end
44
- shipment_synced(shipment)
45
- end
46
- else
47
- shipment_sync_failed(shipment)
48
- end
49
- end
50
-
51
- def call(method: nil, path: nil, params: {})
52
- doc = {}
53
- if params.present?
54
- doc = Nokogiri::XML(params.to_s)
55
- end
56
- response = HTTParty.send(
57
- method,
58
- URI.join(@api_base, path),
59
- body: doc.to_xml,
60
- http_proxyaddr: SolidusBacktracs.configuration.proxy_address,
61
- http_proxyport: SolidusBacktracs.configuration.proxy_port,
62
- http_proxyuser: SolidusBacktracs.configuration.proxy_username,
63
- http_proxypass: SolidusBacktracs.configuration.proxy_password,
64
- headers: {
65
- 'Content-Type' => 'text/xml',
66
- },
67
- )
68
-
69
- case response.code.to_s
70
- when /2\d{2}/
71
- response
72
- when '429'
73
- raise RateLimitedError.from_response(response)
74
- else
75
- raise RequestError.from_response(response)
76
- end
77
- end
78
-
79
- def clear_cache
80
- Rails.cache.delete('backtracks_cache_key')
81
- @response = nil
82
- end
83
-
84
- def parse_authentication_response(response, type)
85
- response.dig("AuthenticationResponse", type)
86
- end
87
-
88
- def parse_rma_creation_response(response)
89
- response.dig("Envelope", "Body", "CreateNewResponse", "CreateNewResult", "Result")
90
- end
91
-
92
- def shipment_synced(shipment)
93
- shipment.update_column(:backtracs_synced_at, Time.zone.now)
94
-
95
- ::Spree::Event.fire(
96
- 'solidus_backtracs.api.sync_completed',
97
- shipment: shipment
98
- )
99
- end
100
-
101
- def shipment_sync_failed(shipment)
102
- ::Spree::Event.fire(
103
- 'solidus_backtracs.api.sync_failed',
104
- shipment: shipment
105
- )
106
- end
107
- end
108
- end
109
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'httparty'
4
-
5
- require 'solidus_backtracs/api/batch_syncer'
6
- require 'solidus_backtracs/api/request_runner'
7
- require 'solidus_backtracs/api/client'
8
- require 'solidus_backtracs/api/request_error'
9
- require 'solidus_backtracs/api/rate_limited_error'
10
- require 'solidus_backtracs/api/shipment_serializer'
11
- require 'solidus_backtracs/api/threshold_verifier'
12
- require 'solidus_backtracs/configuration'
13
- require 'solidus_backtracs/errors'
14
- require 'solidus_backtracs/shipment_notice'
15
- require 'solidus_backtracs/version'
16
- require 'solidus_backtracs/engine'
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe SolidusBacktracs do
4
- describe 'VERSION' do
5
- it 'is defined' do
6
- expect(SolidusBacktracs::VERSION).to be_present
7
- end
8
- end
9
- end