Module: Legion::Extensions::Github::Runners::Users

Includes:
Helpers::Cache, Helpers::Client, Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/github/runners/users.rb

Constant Summary

Constants included from Helpers::Cache

Helpers::Cache::DEFAULT_TTL, Helpers::Cache::DEFAULT_TTLS

Constants included from Helpers::Client

Helpers::Client::CREDENTIAL_RESOLVERS

Constants included from Helpers::TokenCache

Helpers::TokenCache::TOKEN_BUFFER_SECONDS

Instance Method Summary collapse

Methods included from Helpers::Cache

#cache_connected?, #cache_invalidate, #cache_write, #cached_get, #github_ttl_for, #local_cache_connected?, #local_cache_delete, #local_cache_get, #local_cache_set

Methods included from Helpers::Client

#connection, #gh_cli_token_output, #max_fallback_retries, #on_rate_limit, #on_scope_authorized, #on_scope_denied, #resolve_broker_app, #resolve_credential, #resolve_env, #resolve_gh_cli, #resolve_next_credential, #resolve_settings_app, #resolve_settings_delegated, #resolve_settings_pat, #resolve_vault_app, #resolve_vault_delegated, #resolve_vault_pat

Methods included from Helpers::ScopeRegistry

#credential_fingerprint, #invalidate_scope, #mark_rate_limited, #rate_limited?, #register_scope, #scope_status

Methods included from Helpers::TokenCache

#fetch_token, #mark_rate_limited, #rate_limited?, #store_token

Instance Method Details

#get_authenticated_userObject



14
15
16
17
18
# File 'lib/legion/extensions/github/runners/users.rb', line 14

def get_authenticated_user(**)
  cred = resolve_credential
  fp = cred&.dig(:metadata, :credential_fingerprint) || 'anonymous'
  { result: cached_get("github:user:authenticated:#{fp}") { connection(**).get('/user').body } }
end

#get_user(username:) ⇒ Object



20
21
22
# File 'lib/legion/extensions/github/runners/users.rb', line 20

def get_user(username:, **)
  { result: cached_get("github:user:#{username}") { connection(**).get("/users/#{username}").body } }
end

#list_followers(username:, per_page: 30, page: 1) ⇒ Object



24
25
26
27
28
# File 'lib/legion/extensions/github/runners/users.rb', line 24

def list_followers(username:, per_page: 30, page: 1, **)
  { result: cached_get("github:user:#{username}:followers:#{page}:#{per_page}") do
    connection(**).get("/users/#{username}/followers", per_page: per_page, page: page).body
  end }
end

#list_following(username:, per_page: 30, page: 1) ⇒ Object



30
31
32
33
34
# File 'lib/legion/extensions/github/runners/users.rb', line 30

def list_following(username:, per_page: 30, page: 1, **)
  { result: cached_get("github:user:#{username}:following:#{page}:#{per_page}") do
    connection(**).get("/users/#{username}/following", per_page: per_page, page: page).body
  end }
end