ninja_van_api 0.3.1 → 0.3.3
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 +4 -4
- data/lib/ninja_van_api/client.rb +14 -47
- data/lib/ninja_van_api/error.rb +3 -0
- data/lib/ninja_van_api/resources/base_resource.rb +1 -1
- data/lib/ninja_van_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed997af05554494833a80b0f1e41eecfd054d3524e6b546319ff248d5b984ca8
|
4
|
+
data.tar.gz: 2ad564359189a49a750499d554906d22e8841a7ca64273155b12f184c05db851
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c70b03ee5fe1557500ee6c9be2ecd0f98d1e92dd5b597575203e1af0d39daf2a60453cb92e90b7a2c1b002de998b6d2cecdc26feb38c74ff37cbb981ce2e63f
|
7
|
+
data.tar.gz: 6ee23a7f5697805be5b1b6f3e43b3d6d1d6c6a1458f864e7f464b5473c058e876b66720b29aa20201e83b1482846f232e912e34e0dc1bef62151e3b6e9ce73ab
|
data/lib/ninja_van_api/client.rb
CHANGED
@@ -15,9 +15,6 @@ module NinjaVanApi
|
|
15
15
|
@country_code = country_code
|
16
16
|
@test_mode = test_mode
|
17
17
|
@conn_opts = conn_opts
|
18
|
-
if defined?(Rails) && Rails.env.development?
|
19
|
-
@token_info = { "access_token" => ENV["NINJAVAN_API_ACCESS_TOKEN"], "expires" => Time.now.utc.to_i + 3600 }
|
20
|
-
end
|
21
18
|
|
22
19
|
validate_country_code
|
23
20
|
end
|
@@ -42,6 +39,11 @@ module NinjaVanApi
|
|
42
39
|
@waybills ||= WaybillResource.new(self)
|
43
40
|
end
|
44
41
|
|
42
|
+
def refresh_access_token
|
43
|
+
Rails.cache.delete(cache_key)
|
44
|
+
fetch_access_token
|
45
|
+
end
|
46
|
+
|
45
47
|
private
|
46
48
|
|
47
49
|
def validate_country_code
|
@@ -57,19 +59,14 @@ module NinjaVanApi
|
|
57
59
|
end
|
58
60
|
|
59
61
|
def access_token
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
Rails.cache.read(cache_key)["access_token"]
|
64
|
-
else
|
65
|
-
@token_info["access_token"]
|
62
|
+
if Rails.env.development?
|
63
|
+
Rails.logger.debug "Access token might be expired. You can refetch the token by calling NinjaVanApi::Client#refresh_access_token. Make sure update the ENV variable NINJAVAN_API_ACCESS_TOKEN"
|
64
|
+
return { "access_token" => ENV.fetch("NINJAVAN_API_ACCESS_TOKEN") }
|
66
65
|
end
|
67
|
-
end
|
68
66
|
|
69
|
-
|
70
|
-
|
71
|
-
Rails.cache.
|
72
|
-
fetch_access_token
|
67
|
+
fetch_access_token if token_expired?
|
68
|
+
|
69
|
+
Rails.cache.read(cache_key)["access_token"]
|
73
70
|
end
|
74
71
|
|
75
72
|
def fetch_access_token
|
@@ -86,37 +83,11 @@ module NinjaVanApi
|
|
86
83
|
}.to_json
|
87
84
|
end
|
88
85
|
|
89
|
-
raise NinjaVanApi::AuthenticationError, response.body unless response.success?
|
90
|
-
|
91
|
-
JSON.parse(response.body)["access_token"]
|
92
|
-
|
93
|
-
response =
|
94
|
-
Faraday.post(endpoint) do |req|
|
95
|
-
req.headers["Content-Type"] = "application/json"
|
96
|
-
req.headers["Accept"] = "application/json"
|
97
|
-
req.body = { client_id: @client_id, client_secret: @client_secret, grant_type: "client_credentials" }.to_json
|
98
|
-
end
|
99
|
-
|
100
86
|
handle_access_token_response(response)
|
101
87
|
end
|
102
88
|
|
103
|
-
def access_token
|
104
|
-
fetch_access_token if token_expired?
|
105
|
-
|
106
|
-
if defined?(Rails) && Rails.respond_to?(:cache) && Rails.cache
|
107
|
-
Rails.cache.read(cache_key)["access_token"]
|
108
|
-
else
|
109
|
-
@token_info["access_token"]
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
89
|
def token_expired?
|
114
|
-
token_info =
|
115
|
-
if defined?(Rails) && Rails.respond_to?(:cache) && Rails.cache
|
116
|
-
Rails.cache.read(cache_key)
|
117
|
-
else
|
118
|
-
@token_info
|
119
|
-
end
|
90
|
+
token_info = Rails.cache.read(cache_key)
|
120
91
|
|
121
92
|
return true if token_info.nil?
|
122
93
|
|
@@ -128,12 +99,8 @@ module NinjaVanApi
|
|
128
99
|
raise NinjaVanApi::AuthenticationError unless response.success?
|
129
100
|
|
130
101
|
token_info = JSON.parse(response.body)
|
131
|
-
|
132
|
-
|
133
|
-
Rails.cache.write(cache_key, token_info, expires_in: token_info["expires_in"])
|
134
|
-
else
|
135
|
-
@token_info = token_info
|
136
|
-
end
|
102
|
+
Rails.cache.write(cache_key, token_info, expires_in: token_info["expires_in"])
|
103
|
+
cache_key
|
137
104
|
end
|
138
105
|
|
139
106
|
def cache_key
|
data/lib/ninja_van_api/error.rb
CHANGED
@@ -44,7 +44,7 @@ module NinjaVanApi
|
|
44
44
|
when 400
|
45
45
|
raise Error, "A bad request or a validation exception has occurred. #{error_message}"
|
46
46
|
when 401
|
47
|
-
if retry_count.zero?
|
47
|
+
if !(Rails.env.development? || Rails.env.test?) && retry_count.zero?
|
48
48
|
# Force token refresh and retry the request once
|
49
49
|
client.refresh_access_token
|
50
50
|
return retry_request(response.env, retry_count + 1)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ninja_van_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jane Trang Mai Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|