dhl_ecommerce_eu 0.1.5 → 0.1.7

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
2
  SHA256:
3
- metadata.gz: eca94af181434fa8d65ea28198dad646771b036a313868c774beb38745f0fe42
4
- data.tar.gz: 7532c877c42ddc900d7255acfd9ef9bbdfe12c16b132b699045057b5fe7260f6
3
+ metadata.gz: ce2cf181505f55dce2d42847f20ef61507ba00f60cf4e83f14e2a393724c4b84
4
+ data.tar.gz: 6a2dfee9cd9e4c2818301dad07b2934bf7e4c1862aa5035160f10da65c6cf909
5
5
  SHA512:
6
- metadata.gz: cd92522d2f8d6349ae2fa8b96c646509f290568163f24306de4b6997cc38ea5aa2eb7ad697d2487212f6d23ed2a33085c91966b1105459d5682470dc1d41e24e
7
- data.tar.gz: 70d769b221adf371073fb70e46960ab3ce3a7fe656340796f8e00906d4d53c2181003d9513d826383981892ad4b74139660719d5e675c7c51c5a18678b52a969
6
+ metadata.gz: 1d5c37cbdcd4fc8a0d147adb14688396828d16bdf985e7087c66e39fbc353c59ce6b685d78207873823ddeea91a0c77975d3df01bdef784f13b6103e3133653c
7
+ data.tar.gz: cac66728f3de07fbc732c9e82ccffc55dcb835b456735f8e940e2e56bb8e56d210274831036c031a72d31a98810ecd344d1fc88dc09a1a8757d3cd2385e93b30
@@ -42,12 +42,38 @@ module DHLEcommerceEU
42
42
  cached_token = DHLEcommerceEU.cache.read(cache_key)
43
43
  return cached_token if cached_token
44
44
 
45
- client = HTTP.headers(content_type: 'application/json', accept: 'application/json')
46
- .basic_auth(user: client_id, pass: client_secret)
47
- response = client.get("#{url_base}ccc/v1/auth/accesstoken").parse
45
+ response = fetch_auth_response
46
+ handle_auth_error(response) unless response['status'] == '200'
47
+
48
48
  bearer_token = response['access_token']
49
49
  DHLEcommerceEU.cache.write(cache_key, bearer_token, expires_in: response['expires_in'] - 60)
50
50
  bearer_token
51
51
  end
52
+
53
+ def fetch_auth_response
54
+ client = HTTP.headers(content_type: 'application/json', accept: 'application/json')
55
+ .basic_auth(user: client_id, pass: client_secret)
56
+ client.get("#{url_base}ccc/v1/auth/accesstoken").parse
57
+ end
58
+
59
+ def handle_auth_error(response) # rubocop:disable Metrics/MethodLength
60
+ error_message = response['detail']
61
+ case response['status']
62
+ when 401
63
+ raise AuthenticationError, "Invalid credentials. #{error_message}"
64
+ when 403
65
+ raise AuthorizationError, "Access denied. #{error_message}"
66
+ when 404
67
+ raise NotFoundError, "Resource not found. #{error_message}"
68
+ when 429
69
+ raise RateLimitError, "Rate limit exceeded. #{error_message}"
70
+ when 500
71
+ raise InternalServerError, "Internal server error. #{error_message}"
72
+ when 503
73
+ raise ServiceUnavailableError, "Service unavailable. #{error_message}"
74
+ else
75
+ raise Error, "Unknown error. #{error_message}"
76
+ end
77
+ end
52
78
  end
53
79
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DHLEcommerceEU
4
- VERSION = '0.1.5'
4
+ VERSION = '0.1.7'
5
5
  end
@@ -21,4 +21,10 @@ module DHLEcommerceEU
21
21
  autoload :Tracking, 'dhl_ecommerce_eu/objects/tracking'
22
22
 
23
23
  class Error < StandardError; end
24
+ class AuthenticationError < Error; end
25
+ class AuthorizationError < Error; end
26
+ class NotFoundError < Error; end
27
+ class RateLimitError < Error; end
28
+ class InternalServerError < Error; end
29
+ class ServiceUnavailableError < Error; end
24
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dhl_ecommerce_eu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Chong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-16 00:00:00.000000000 Z
11
+ date: 2025-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  requirements: []
196
- rubygems_version: 3.2.33
196
+ rubygems_version: 3.5.22
197
197
  signing_key:
198
198
  specification_version: 4
199
199
  summary: Ruby API wrapper for DHL eCommerce EU