Class: Gusto::CompanyAccessTokenRefresher
- Inherits:
-
Object
- Object
- Gusto::CompanyAccessTokenRefresher
- Defined in:
- lib/fern_gusto.rb
Constant Summary collapse
- EXPIRY_BUFFER_MS =
1 minute buffer
60 * 1000
Instance Method Summary collapse
- #get_token ⇒ Object
-
#initialize(client_id, client_secret, redirect_uri, refresh_token) ⇒ CompanyAccessTokenRefresher
constructor
A new instance of CompanyAccessTokenRefresher.
Constructor Details
#initialize(client_id, client_secret, redirect_uri, refresh_token) ⇒ CompanyAccessTokenRefresher
Returns a new instance of CompanyAccessTokenRefresher.
276 277 278 279 280 281 282 283 |
# File 'lib/fern_gusto.rb', line 276 def initialize(client_id, client_secret, redirect_uri, refresh_token) @client_id = client_id @client_secret = client_secret @redirect_uri = redirect_uri @refresh_token = refresh_token @token = nil @token_expiry = nil end |
Instance Method Details
#get_token ⇒ Object
285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/fern_gusto.rb', line 285 def get_token if @token && @token_expiry && @token_expiry > Time.now + EXPIRY_BUFFER_MS return @token end client = Gusto::BaseClient.new(token: nil) response = client.token.refresh( client_id: @client_id, client_secret: @client_secret, redirect_uri: @redirect_uri, refresh_token: @refresh_token, grant_type: "refresh_token" ) raise GustoError, "Expected access token in response but got null" unless response.access_token raise GustoError, "Expected refresh token in response but got null" unless response.refresh_token raise GustoError, "Expected expires_in in response but got null" unless response.expires_in @token = response.access_token @refresh_token = response.refresh_token @token_expiry = Time.now + response.expires_in @token end |