Module: Legion::Extensions::Github::Runners::Labels
- Includes:
- Helpers::Cache, Helpers::Client, Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/github/runners/labels.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
- #add_labels_to_issue(owner:, repo:, issue_number:, labels:) ⇒ Object
- #create_label(owner:, repo:, name:, color:, description: nil) ⇒ Object
- #delete_label(owner:, repo:, name:) ⇒ Object
- #get_label(owner:, repo:, name:) ⇒ Object
- #list_labels(owner:, repo:, per_page: 30, page: 1) ⇒ Object
- #remove_label_from_issue(owner:, repo:, issue_number:, name:) ⇒ Object
- #update_label(owner:, repo:, name:, new_name: nil, color: nil, description: nil) ⇒ Object
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
#add_labels_to_issue(owner:, repo:, issue_number:, labels:) ⇒ Object
47 48 49 50 |
# File 'lib/legion/extensions/github/runners/labels.rb', line 47 def add_labels_to_issue(owner:, repo:, issue_number:, labels:, **) response = connection(owner: owner, repo: repo, **).post("/repos/#{owner}/#{repo}/issues/#{issue_number}/labels", { labels: labels }) { result: response.body } end |
#create_label(owner:, repo:, name:, color:, description: nil) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/legion/extensions/github/runners/labels.rb', line 27 def create_label(owner:, repo:, name:, color:, description: nil, **) payload = { name: name, color: color, description: description }.compact response = connection(owner: owner, repo: repo, **).post("/repos/#{owner}/#{repo}/labels", payload) cache_write("github:repo:#{owner}/#{repo}:labels:#{name}", response.body) if response.body['id'] { result: response.body } end |
#delete_label(owner:, repo:, name:) ⇒ Object
41 42 43 44 45 |
# File 'lib/legion/extensions/github/runners/labels.rb', line 41 def delete_label(owner:, repo:, name:, **) response = connection(owner: owner, repo: repo, **).delete("/repos/#{owner}/#{repo}/labels/#{name}") cache_invalidate("github:repo:#{owner}/#{repo}:labels:#{name}") if response.status == 204 { result: response.status == 204 } end |
#get_label(owner:, repo:, name:) ⇒ Object
21 22 23 24 25 |
# File 'lib/legion/extensions/github/runners/labels.rb', line 21 def get_label(owner:, repo:, name:, **) { result: cached_get("github:repo:#{owner}/#{repo}:labels:#{name}") do connection(owner: owner, repo: repo, **).get("/repos/#{owner}/#{repo}/labels/#{name}").body end } end |
#list_labels(owner:, repo:, per_page: 30, page: 1) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/legion/extensions/github/runners/labels.rb', line 14 def list_labels(owner:, repo:, per_page: 30, page: 1, **) params = { per_page: per_page, page: page } { result: cached_get("github:repo:#{owner}/#{repo}:labels:#{page}:#{per_page}") do connection(owner: owner, repo: repo, **).get("/repos/#{owner}/#{repo}/labels", params).body end } end |
#remove_label_from_issue(owner:, repo:, issue_number:, name:) ⇒ Object
52 53 54 55 |
# File 'lib/legion/extensions/github/runners/labels.rb', line 52 def remove_label_from_issue(owner:, repo:, issue_number:, name:, **) response = connection(owner: owner, repo: repo, **).delete("/repos/#{owner}/#{repo}/issues/#{issue_number}/labels/#{name}") { result: response.status == 204 } end |
#update_label(owner:, repo:, name:, new_name: nil, color: nil, description: nil) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/legion/extensions/github/runners/labels.rb', line 34 def update_label(owner:, repo:, name:, new_name: nil, color: nil, description: nil, **) payload = { new_name: new_name, color: color, description: description }.compact response = connection(owner: owner, repo: repo, **).patch("/repos/#{owner}/#{repo}/labels/#{name}", payload) cache_write("github:repo:#{owner}/#{repo}:labels:#{name}", response.body) if response.body['id'] { result: response.body } end |