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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb75aaf6e64d6ef01f00956f20fb796669477fd7c627e747f97980bff5ddb5da
4
- data.tar.gz: '098968ee5bc648abc6dbc410d623d5561ddd692954b5b12f5e2abb5c6e955d0c'
3
+ metadata.gz: 2cd27cee73fe0ca1c7df7893b35f52f3cdf54f9ae32a4559c739cc804d80bd4a
4
+ data.tar.gz: 5194f43286bf53cd04ea22b01d261268c32749b0b9dc8d5db24cc778d6b1ae70
5
5
  SHA512:
6
- metadata.gz: 82785e30614943d05dc3385bd11baf281cf306b7fcdd8723575dc8f1a4533abc05b4919accf6b346d29c03f1ab9719d411bd66ca8f727fa9ca416cab557ef812
7
- data.tar.gz: c20e9376d1f3b151568d987a1626dee8bb4cb360eae8c7d011ea6e4b92e6ab1e20214f1f40565726d4c30f627b003b099b33783df66b8853ca04185f08548ae5
6
+ metadata.gz: 10885ee89ef3960ba1d192ff6b5c32f51193b235d5c10d10831af1dc28b6583e65547a69d1db2c2738fe22ba94bcf72ff2bbccabdcbed9b27ab38fee6a14565c
7
+ data.tar.gz: 783e67561264e6734caeca1bffc8ab67f758c09675ec261ed0f6238bf1c13bf523356f6d114c6f56c6d9869f5625b5975f1e6c6e2bba06217139d0ccb9e50b9b
@@ -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', '>= 0.17.3', '< 1.9.0'
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 :json # Encode request bodies as JSON
30
- faraday.request :retry # Retry transient failures
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 ErpIntegration::Middleware::ErrorHandling
33
+ faraday.use :error_handling
37
34
  # Custom middleware for rotating API keys
38
- faraday.use ErpIntegration::Middleware::ApiKeysRotation, rotation_options
35
+ faraday.use :api_keys_rotation, rotation_options
39
36
  # Custom middleware for logging requests and responses
40
- faraday.use ErpIntegration::Middleware::Logger, @logger, formatter: FORMATTER if @logger
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
@@ -38,3 +38,5 @@ module ErpIntegration
38
38
  end
39
39
  end
40
40
  end
41
+
42
+ Faraday::Middleware.register_middleware(api_keys_rotation: ErpIntegration::Middleware::ApiKeysRotation)
@@ -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::Response::Middleware
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)
@@ -49,3 +49,5 @@ module ErpIntegration
49
49
  end
50
50
  end
51
51
  end
52
+
53
+ Faraday::Middleware.register_middleware(custom_logger: ErpIntegration::Middleware::Logger)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ErpIntegration
4
- VERSION = '0.63.0'
4
+ VERSION = '1.0.0'
5
5
  end
@@ -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.63.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-05 00:00:00.000000000 Z
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: '1.3'
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: '1.3'
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