erp_integration 0.63.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/erp_integration.gemspec +1 -2
- data/lib/erp_integration/fulfil/client.rb +5 -8
- data/lib/erp_integration/middleware/api_keys_rotation.rb +2 -0
- data/lib/erp_integration/middleware/error_handling.rb +3 -1
- data/lib/erp_integration/middleware/json_decode.rb +27 -0
- data/lib/erp_integration/middleware/json_encode.rb +21 -0
- data/lib/erp_integration/middleware/logger.rb +2 -0
- data/lib/erp_integration/version.rb +1 -1
- data/lib/erp_integration.rb +4 -1
- metadata +8 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2cd27cee73fe0ca1c7df7893b35f52f3cdf54f9ae32a4559c739cc804d80bd4a
|
4
|
+
data.tar.gz: 5194f43286bf53cd04ea22b01d261268c32749b0b9dc8d5db24cc778d6b1ae70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10885ee89ef3960ba1d192ff6b5c32f51193b235d5c10d10831af1dc28b6583e65547a69d1db2c2738fe22ba94bcf72ff2bbccabdcbed9b27ab38fee6a14565c
|
7
|
+
data.tar.gz: 783e67561264e6734caeca1bffc8ab67f758c09675ec261ed0f6238bf1c13bf523356f6d114c6f56c6d9869f5625b5975f1e6c6e2bba06217139d0ccb9e50b9b
|
data/erp_integration.gemspec
CHANGED
@@ -32,8 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_dependency 'activesupport', '>= 4.1.16'
|
33
33
|
|
34
34
|
# Faraday is a HTTP/REST API client library to interact with third-party API vendors
|
35
|
-
spec.add_dependency 'faraday', '
|
36
|
-
spec.add_dependency 'faraday_middleware', '>= 0.14', '< 1.3'
|
35
|
+
spec.add_dependency 'faraday', '~> 2.12'
|
37
36
|
|
38
37
|
# Development dependencies
|
39
38
|
spec.add_development_dependency 'byebug', '~> 11.0'
|
@@ -26,18 +26,15 @@ module ErpIntegration
|
|
26
26
|
@connection ||= Faraday.new(url: base_url) do |faraday|
|
27
27
|
faraday.headers = default_headers
|
28
28
|
|
29
|
-
faraday.request :
|
30
|
-
faraday.
|
31
|
-
|
32
|
-
faraday.response :follow_redirects
|
33
|
-
faraday.response :json # Decode response bodies as JSON
|
29
|
+
faraday.request :json_encode # Encode request bodies as JSON
|
30
|
+
faraday.response :json_decode # Decode response bodies as JSON
|
34
31
|
|
35
32
|
# Custom error handling for the error response
|
36
|
-
faraday.use
|
33
|
+
faraday.use :error_handling
|
37
34
|
# Custom middleware for rotating API keys
|
38
|
-
faraday.use
|
35
|
+
faraday.use :api_keys_rotation, rotation_options
|
39
36
|
# Custom middleware for logging requests and responses
|
40
|
-
faraday.use
|
37
|
+
faraday.use :custom_logger, @logger, formatter: FORMATTER if @logger
|
41
38
|
|
42
39
|
# Adapter definition should be last in order to make the json parsers be loaded correctly
|
43
40
|
faraday.adapter faraday_adapter
|
@@ -4,7 +4,7 @@ module ErpIntegration
|
|
4
4
|
module Middleware
|
5
5
|
# The `ErrorHandling` middleware allows to raise our own exceptions that
|
6
6
|
# are easier to catch for the host application (e.g. `mejuri-web`).
|
7
|
-
class ErrorHandling < Faraday::
|
7
|
+
class ErrorHandling < Faraday::Middleware
|
8
8
|
HTTP_ERROR_CODES = {
|
9
9
|
400 => ErpIntegration::HttpError::BadRequest,
|
10
10
|
401 => ErpIntegration::HttpError::AuthorizationRequired,
|
@@ -29,3 +29,5 @@ module ErpIntegration
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
Faraday::Middleware.register_middleware(error_handling: ErpIntegration::Middleware::ErrorHandling)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ErpIntegration
|
4
|
+
module Middleware
|
5
|
+
class JsonDecode < Faraday::Middleware
|
6
|
+
class ParseError < StandardError; end
|
7
|
+
|
8
|
+
def call(env)
|
9
|
+
@app.call(env).on_complete { |response| on_complete(response) }
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def on_complete(env)
|
15
|
+
return unless env.body.is_a?(String)
|
16
|
+
|
17
|
+
begin
|
18
|
+
env.body = env.body.empty? ? nil : JSON.parse(env.body)
|
19
|
+
rescue JSON::ParserError
|
20
|
+
raise ParseError, "Failed to parse JSON response: #{env.body}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Faraday::Response.register_middleware(json_decode: ErpIntegration::Middleware::JsonDecode)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ErpIntegration
|
4
|
+
module Middleware
|
5
|
+
class JsonEncode < Faraday::Middleware
|
6
|
+
def call(env)
|
7
|
+
on_request(env)
|
8
|
+
|
9
|
+
@app.call(env)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def on_request(env)
|
15
|
+
env.body = env.body.to_json if env.body
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Faraday::Request.register_middleware(json_encode: ErpIntegration::Middleware::JsonEncode)
|
data/lib/erp_integration.rb
CHANGED
@@ -5,7 +5,6 @@ require 'active_support/core_ext/string/inflections'
|
|
5
5
|
require 'active_support/core_ext/module/delegation' # Allows using `delegate`
|
6
6
|
require 'active_support/core_ext/object/blank'
|
7
7
|
require 'faraday'
|
8
|
-
require 'faraday_middleware'
|
9
8
|
require 'json'
|
10
9
|
|
11
10
|
require_relative 'erp_integration/version'
|
@@ -20,9 +19,13 @@ require_relative 'erp_integration/middleware/api_keys_rotation'
|
|
20
19
|
require_relative 'erp_integration/middleware/error_handling'
|
21
20
|
require_relative 'erp_integration/middleware/logger'
|
22
21
|
require_relative 'erp_integration/middleware/formatter'
|
22
|
+
require_relative 'erp_integration/middleware/json_encode'
|
23
|
+
require_relative 'erp_integration/middleware/json_decode'
|
23
24
|
|
24
25
|
# HTTP clients
|
25
26
|
require_relative 'erp_integration/fulfil/client'
|
27
|
+
require_relative 'erp_integration/fulfil/persistence'
|
28
|
+
require_relative 'erp_integration/fulfil/api_resource'
|
26
29
|
|
27
30
|
# The `ErpIntegration` integrates Mejuri with third-party ERP vendors.
|
28
31
|
module ErpIntegration
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erp_integration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Vermaas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -28,42 +28,16 @@ dependencies:
|
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.17.3
|
34
|
-
- - "<"
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 1.9.0
|
37
|
-
type: :runtime
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 0.17.3
|
44
|
-
- - "<"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 1.9.0
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: faraday_middleware
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0.14'
|
54
|
-
- - "<"
|
31
|
+
- - "~>"
|
55
32
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
33
|
+
version: '2.12'
|
57
34
|
type: :runtime
|
58
35
|
prerelease: false
|
59
36
|
version_requirements: !ruby/object:Gem::Requirement
|
60
37
|
requirements:
|
61
|
-
- - "
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '0.14'
|
64
|
-
- - "<"
|
38
|
+
- - "~>"
|
65
39
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
40
|
+
version: '2.12'
|
67
41
|
- !ruby/object:Gem::Dependency
|
68
42
|
name: byebug
|
69
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -322,6 +296,8 @@ files:
|
|
322
296
|
- lib/erp_integration/middleware/api_keys_rotation.rb
|
323
297
|
- lib/erp_integration/middleware/error_handling.rb
|
324
298
|
- lib/erp_integration/middleware/formatter.rb
|
299
|
+
- lib/erp_integration/middleware/json_decode.rb
|
300
|
+
- lib/erp_integration/middleware/json_encode.rb
|
325
301
|
- lib/erp_integration/middleware/logger.rb
|
326
302
|
- lib/erp_integration/party_address.rb
|
327
303
|
- lib/erp_integration/product.rb
|