rail-locator-api 0.1.14 → 0.1.15

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: 65b50eaa7992d646d4f617b79b5f81ac212749952257e58bebbd990138a68bae
4
- data.tar.gz: 0d3b58eed1ff241b14ab9fa11baa37e499d8c4aa83abe07a6150718f24209cf5
3
+ metadata.gz: 9e07cebd2dce2be959686afad6ca60801e2280ef0222cf2098e3d5932ec92aa0
4
+ data.tar.gz: f8e03793cac309b58337410b73877611715e68932f808c0378e25f5641a0850d
5
5
  SHA512:
6
- metadata.gz: 9fa828ef4a6adaaf6ddc2389da15d9eba2e7856226e6e6dbc14f2dccfc409aab086e09edea75a35f9f636999f463f17b3cc7164d55deeb82e1dafd323f09733c
7
- data.tar.gz: b16f370d86c688dc12a8868eda9c8360565e23a09bdd158c2c35d4ab6d07c5193413b9eb07be03cab961f94c6e96d77cbe25fad81f3ff3751810593fda3ff2f2
6
+ metadata.gz: ebedb6b16df8f05bb46ec3bf0b4dc4ce18bb1dd3efae40c00f9c14ea25cf32286667f13bba9a51171d9c6d037fef08157d1fb86916ac397e94e7fd147d9098ef
7
+ data.tar.gz: d1ab4fd501340415ea5915601f129478df88bc4b3f1ce1c237fba4304099a8ac96c24ce99cb90a52d23929b24ccec86a3de45c7df133bf9f938e5375d98ac0c0
@@ -20,9 +20,16 @@ module RailLocatorApi
20
20
 
21
21
  @access_token = access_token || self.class.access_token || RailLocatorApi.generate_access_token.try(:dig, "access_token")
22
22
  @access_token = @access_token.strip if @access_token
23
- @access_token = RailLocatorApi::generate_access_token.try(:dig, "access_token") if @access_token.nil?
24
23
  @refresh_token = refresh_token || self.class.refresh_token
25
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
26
33
 
27
34
  @api_user_email = api_user_email || ENV['API_USER_EMAIL'] || ""
28
35
  @api_user_password = api_user_password || ENV['API_USER_PASSWORD'] || ""
@@ -90,6 +97,39 @@ module RailLocatorApi
90
97
 
91
98
  protected
92
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)
122
+ begin
123
+ return false if token.nil?
124
+ exp = JWT.decode(token, JWT_SECTET_CODE, false).try(:first).try(:dig, "exp")
125
+ return false if exp.nil?
126
+ Time.at(exp) > Time.now + 30.second
127
+ rescue => e
128
+ #Sentry.capture_exception(e)
129
+ false
130
+ end
131
+ end
132
+
93
133
  def reset
94
134
  @path_parts = []
95
135
  end
@@ -1,3 +1,3 @@
1
1
  module RailLocatorApi
2
- VERSION = "0.1.14"
2
+ VERSION = "0.1.15"
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.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Osetrov
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.3.6
69
+ - !ruby/object:Gem::Dependency
70
+ name: jwt
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: ''
70
84
  email: pavel.osetrov@me.com
71
85
  executables: []