Module: Legion::Extensions::Github::CLI::App
- Defined in:
- lib/legion/extensions/github/cli/app.rb
Constant Summary
Constants included from App::Runners::Manifest
App::Runners::Manifest::DEFAULT_EVENTS, App::Runners::Manifest::DEFAULT_PERMISSIONS
Constants included from Helpers::Client
Helpers::Client::CREDENTIAL_RESOLVERS
Constants included from Helpers::TokenCache
Helpers::TokenCache::TOKEN_BUFFER_SECONDS
Instance Method Summary collapse
- #complete_setup(code:) ⇒ Object
- #setup(name:, url:, webhook_url:, org: nil, callback_timeout: 300) ⇒ Object
Methods included from App::Runners::CredentialStore
#load_oauth_token, #store_app_credentials, #store_oauth_token
Methods included from App::Runners::Manifest
#exchange_manifest_code, #generate_manifest, #manifest_url
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
#complete_setup(code:) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/legion/extensions/github/cli/app.rb', line 37 def complete_setup(code:, **) result = exchange_manifest_code(code: code)[:result] return { error: 'exchange_failed' } unless result&.dig('id') if respond_to?(:store_app_credentials, true) store_app_credentials( app_id: result['id'].to_s, private_key: result['pem'], client_id: result['client_id'], client_secret: result['client_secret'], webhook_secret: result['webhook_secret'] ) end { result: result } end |
#setup(name:, url:, webhook_url:, org: nil, callback_timeout: 300) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/legion/extensions/github/cli/app.rb', line 17 def setup(name:, url:, webhook_url:, org: nil, callback_timeout: 300, **) server = Helpers::CallbackServer.new server.start callback_url = server.redirect_uri manifest = generate_manifest( name: name, url: url, webhook_url: webhook_url, callback_url: callback_url )[:result] url_result = manifest_url(manifest: manifest, org: org)[:result] { result: { manifest_url: url_result, callback_port: server.port, message: 'Open the manifest URL in your browser to create the GitHub App', callback: server.wait_for_callback(timeout: callback_timeout) } } ensure server&.shutdown end |