Class: Legion::Extensions::Github::App::Actor::TokenRefresh

Inherits:
Actors::Every
  • Object
show all
Defined in:
lib/legion/extensions/github/app/actor/token_refresh.rb

Overview

rubocop:disable Legion/Extension/SelfContainedActorRunnerClass,Legion/Extension/EveryActorRequiresTime

Instance Method Summary collapse

Instance Method Details

#check_subtask?Boolean

Returns:

  • (Boolean)


10
# File 'lib/legion/extensions/github/app/actor/token_refresh.rb', line 10

def check_subtask? = false

#enabled?Boolean

rubocop:disable Legion/Extension/ActorEnabledSideEffects

Returns:

  • (Boolean)


18
19
20
21
22
# File 'lib/legion/extensions/github/app/actor/token_refresh.rb', line 18

def enabled?
  defined?(Legion::Extensions::Github::Helpers::TokenCache)
rescue StandardError => _e
  false
end

#generate_task?Boolean

Returns:

  • (Boolean)


11
# File 'lib/legion/extensions/github/app/actor/token_refresh.rb', line 11

def generate_task? = false

#manualObject

rubocop:enable Legion/Extension/ActorEnabledSideEffects



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/legion/extensions/github/app/actor/token_refresh.rb', line 25

def manual
  log.info('App::Actor::TokenRefresh: refreshing installation token')
  settings = github_app_settings
  return unless settings[:app_id] && settings[:private_key] && settings[:installation_id]

  auth = Object.new.extend(Legion::Extensions::Github::App::Runners::Auth)
  jwt_result = auth.generate_jwt(app_id: settings[:app_id], private_key: settings[:private_key])
  return unless jwt_result[:result]

  token_result = auth.create_installation_token(
    jwt:             jwt_result[:result],
    installation_id: settings[:installation_id]
  )
  return unless token_result.dig(:result, 'token')

  token_cache.store_token(
    token:      token_result[:result]['token'],
    auth_type:  :app_installation,
    expires_at: Time.parse(token_result[:result]['expires_at'])
  )
  log.info('App::Actor::TokenRefresh: installation token refreshed')
rescue StandardError => e
  log.error("App::Actor::TokenRefresh: #{e.message}")
end

#timeObject



13
14
15
# File 'lib/legion/extensions/github/app/actor/token_refresh.rb', line 13

def time
  45 * 60
end

#use_runner?Boolean

Returns:

  • (Boolean)


9
# File 'lib/legion/extensions/github/app/actor/token_refresh.rb', line 9

def use_runner?    = false