rail-locator-api 0.1.15 → 0.1.17

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: 9e07cebd2dce2be959686afad6ca60801e2280ef0222cf2098e3d5932ec92aa0
4
- data.tar.gz: f8e03793cac309b58337410b73877611715e68932f808c0378e25f5641a0850d
3
+ metadata.gz: 9f669bd03427eda818b445e6639fa78c663defa18a11a491144dace854ab8906
4
+ data.tar.gz: a3eaabab8cff46cbb00334454833e2bc1b53c58e8f3668b3402cd98eea868e00
5
5
  SHA512:
6
- metadata.gz: ebedb6b16df8f05bb46ec3bf0b4dc4ce18bb1dd3efae40c00f9c14ea25cf32286667f13bba9a51171d9c6d037fef08157d1fb86916ac397e94e7fd147d9098ef
7
- data.tar.gz: d1ab4fd501340415ea5915601f129478df88bc4b3f1ce1c237fba4304099a8ac96c24ce99cb90a52d23929b24ccec86a3de45c7df133bf9f938e5375d98ac0c0
6
+ metadata.gz: ce8f47cbc300948b32217bcc745340f952cecde7790e0c4cbd4cf0bc78aa7fcc289bc29a0988588509fbbd7b25ad0f32ac46092e4cd0a00faffa43c25ffc2abc
7
+ data.tar.gz: 1c15323aee4561cd964048188cdc1bc402275d2f6e1cd81590a1499a165b1a97358f1ea51dbc1963181d3d059877a1391ef92206e55f8c6637f81f178fc48af3
@@ -13,6 +13,8 @@ RailLocatorApi.setup do |config|
13
13
  config::Request.api_user_email ||= ENV['API_USER_EMAIL']
14
14
  config::Request.api_user_password ||= ENV['API_USER_PASSWORD']
15
15
 
16
+ config::Request.jwt_secret_code ||= ENV['JWT_SECRET_CODE']
17
+
16
18
  config::Request.timeout = 60
17
19
  config::Request.open_timeout = 60
18
20
  config::Request.symbolize_keys = true
@@ -33,6 +33,9 @@ module RailLocatorApi
33
33
  protected
34
34
 
35
35
  # Convenience accessors
36
+ def jwt_secret_code
37
+ @request_builder.jwt_secret_code
38
+ end
36
39
 
37
40
  def access_token
38
41
  @request_builder.access_token
@@ -121,6 +124,13 @@ module RailLocatorApi
121
124
  if request
122
125
  request.params.merge!(params) if params
123
126
  request.headers['Content-Type'] = 'application/json'
127
+ unless RailLocatorApi::Request.token_alive?(RailLocatorApi::Request.access_token)
128
+ if RailLocatorApi::Request.token_alive?(RailLocatorApi::Request.refresh_token)
129
+ response = RailLocatorApi.refresh_access_token
130
+ RailLocatorApi::Request.access_token = response.try(:dig, "access_token")
131
+ RailLocatorApi::Request.refresh_token = response.try(:dig, "refresh_token")
132
+ end
133
+ end
124
134
  if self.api_auth_method == :base64
125
135
  request.headers['Authorization'] = "Basic " + Base64::encode64("#{self.api_user_email}:#{self.api_user_password}")
126
136
  end
@@ -1,6 +1,6 @@
1
1
  module RailLocatorApi
2
2
  class Request
3
- attr_accessor :access_token, :refresh_token, :api_key, :api_user_email, :api_user_password, :api_auth_method, :api_endpoint,
3
+ attr_accessor :jwt_secret_code, :access_token, :refresh_token, :api_key, :api_user_email, :api_user_password, :api_auth_method, :api_endpoint,
4
4
  :timeout, :open_timeout, :proxy, :ssl_options, :faraday_adapter, :symbolize_keys, :debug,
5
5
  :without_ratelimit, :logger, :test
6
6
 
@@ -9,7 +9,7 @@ module RailLocatorApi
9
9
  DEFAULT_TIMEOUT = 60
10
10
  DEFAULT_OPEN_TIMEOUT = 60
11
11
 
12
- def initialize(access_token: nil, refresh_token: nil, api_key: nil, api_user_email: nil, api_user_password: nil,
12
+ def initialize(jwt_secret_code: nil, access_token: nil, refresh_token: nil, api_key: nil, api_user_email: nil, api_user_password: nil,
13
13
  api_endpoint: nil, api_auth_method: nil, timeout: nil, open_timeout: nil, proxy: nil, ssl_options: nil,
14
14
  faraday_adapter: nil, symbolize_keys: false, debug: false, without_ratelimit: false,
15
15
  logger: nil, test: false)
@@ -22,14 +22,9 @@ module RailLocatorApi
22
22
  @access_token = @access_token.strip if @access_token
23
23
  @refresh_token = refresh_token || self.class.refresh_token
24
24
  @refresh_token = @refresh_token.strip if @refresh_token
25
- unless token_alive?(@access_token)
26
- if token_alive?(@refresh_token)
27
- RailLocatorApi::Request.refresh_token = @refresh_token
28
- response = RailLocatorApi.refresh_access_token
29
- @access_token = response.try(:dig, "access_token")
30
- @refresh_token = response.try(:dig, "refresh_token")
31
- end
32
- end
25
+
26
+ @jwt_secret_code = jwt_secret_code || self.class.jwt_secret_code
27
+ @jwt_secret_code = @jwt_secret_code.strip if @jwt_secret_code
33
28
 
34
29
  @api_user_email = api_user_email || ENV['API_USER_EMAIL'] || ""
35
30
  @api_user_password = api_user_password || ENV['API_USER_PASSWORD'] || ""
@@ -95,33 +90,10 @@ module RailLocatorApi
95
90
  reset
96
91
  end
97
92
 
98
- protected
99
-
100
- def need_login?
101
- RailLocatorApi::Request.api_key = state
102
- RailLocatorApi::Request.access_token = token
103
- if token_alive?(token)
104
- return false
105
- else
106
- if token_alive?(refresh_token)
107
- RailLocatorApi::Request.refresh_token = refresh_token
108
- response = RailLocatorApi.refresh_access_token
109
- self.token = response.try(:dig, "access_token")
110
- self.refresh_token = response.try(:dig, "refresh_token")
111
- RailLocatorApi::Request.api_key = state
112
- RailLocatorApi::Request.access_token = token
113
- return !save
114
- else
115
- true
116
- end
117
- end
118
- true
119
- end
120
-
121
- def token_alive?(token)
93
+ def token_alive?(token, jwt_secret_code=@jwt_secret_code)
122
94
  begin
123
95
  return false if token.nil?
124
- exp = JWT.decode(token, JWT_SECTET_CODE, false).try(:first).try(:dig, "exp")
96
+ exp = JWT.decode(token, jwt_secret_code, false).try(:first).try(:dig, "exp")
125
97
  return false if exp.nil?
126
98
  Time.at(exp) > Time.now + 30.second
127
99
  rescue => e
@@ -130,17 +102,20 @@ module RailLocatorApi
130
102
  end
131
103
  end
132
104
 
105
+ protected
106
+
133
107
  def reset
134
108
  @path_parts = []
135
109
  end
136
110
 
137
111
  class << self
138
- attr_accessor :access_token, :refresh_token, :api_key, :api_user_email, :api_user_password, :api_auth_method,
112
+ attr_accessor :jwt_secret_code, :access_token, :refresh_token, :api_key, :api_user_email, :api_user_password, :api_auth_method,
139
113
  :timeout, :open_timeout, :api_endpoint, :proxy, :ssl_options, :faraday_adapter, :symbolize_keys,
140
114
  :debug, :without_ratelimit, :logger, :test
141
115
 
142
116
  def method_missing(sym, *args, &block)
143
- new(access_token: self.access_token, refresh_token: self.refresh_token, api_key: self.api_key,
117
+ new(jwt_secret_code: self.jwt_secret_code, access_token: self.access_token, refresh_token: self.refresh_token,
118
+ api_key: self.api_key,
144
119
  api_user_email: self.api_user_email, api_user_password: self.api_user_email,
145
120
  api_auth_method: self.api_auth_method, api_endpoint: self.api_endpoint,
146
121
  timeout: self.timeout, open_timeout: self.open_timeout, faraday_adapter: self.faraday_adapter,
@@ -1,3 +1,3 @@
1
1
  module RailLocatorApi
2
- VERSION = "0.1.15"
2
+ VERSION = "0.1.17"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rail-locator-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Osetrov