dhl_ecommerce_eu 0.1.3 → 0.1.6

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: cd73619df6578e9cc4411da701aad748c4c5e046b0a67827a3c9a40c5399a905
4
- data.tar.gz: af8ed93db04dfe22d83d2341ef53388513fb3f22eeac4c6f68397cc35f2a6207
3
+ metadata.gz: 5aac183328f8a915af51346f7a05b62be4e3845d43560bf259cca56274f03682
4
+ data.tar.gz: d718a3ae56885f43c19e0be94da359e7e7809f0c0c09bd3a64ffe648dd283fb8
5
5
  SHA512:
6
- metadata.gz: a19fb08ea8adbb004d5688539ecf4f15f2818d026ea7abe31634b1dbc96e60ec3875df2b0c23ba3dcf8e20b338a5f6f45e791d4468e53f41d835f4fe64782b07
7
- data.tar.gz: a137a4ea6edb6b134f83f8f550ca1f75243c460abf5024cac83abdd2187a61d46d97f2a18514f1bd4d289acf36f074077c166af45c5028f5b8b1e4470858e551
6
+ metadata.gz: 4fa1e5c3a4fae8db9022ffedbd999e1eba0561e4672e65e7952dc16f8deaaa64bac3151a255cdaee3182f0f854573747e9062d4783b08858a05db564dca26dde
7
+ data.tar.gz: c7bad201b5461e37561060d9962c1d8601544cdac890b08113421c6fab33fbf298bccedb5223e86c7cf8850014928dde0ca653643da57361fea802e476503bde
@@ -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
@@ -9,7 +9,11 @@ module DHLEcommerceEU
9
9
  #
10
10
  def retrieve(shipment_id)
11
11
  payload = get_request('ccc/track-trace', params: { shipmentId: shipment_id }).parse
12
- payload.map(&Tracking.method(:new))
12
+ if payload.is_a?(Array)
13
+ payload.map(&Tracking.method(:new))
14
+ else
15
+ Tracking.new(payload)
16
+ end
13
17
  end
14
18
  end
15
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DHLEcommerceEU
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.6'
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.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Chong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-12 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.32
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