Class: Octokit::Client

Inherits:
Object
  • Object
show all
Includes:
Authentication, Apps, Authorizations, CommitComments, Commits, Contents, Deployments, Downloads, Emojis, Events, Feeds, Gists, Gitignore, Hooks, Issues, Labels, LegacySearch, Licenses, Markdown, Marketplace, Meta, Milestones, Notifications, Objects, Organizations, Pages, Projects, PubSubHubbub, PullRequests, RateLimit, Reactions, Refs, Releases, Repositories, RepositoryInvitations, Reviews, Say, Search, ServiceStatus, SourceImport, Stats, Statuses, Traffic, Users, Configurable, Connection, Preview, Warnable
Defined in:
lib/octokit/client.rb,
lib/octokit/client/say.rb,
lib/octokit/client/apps.rb,
lib/octokit/client/meta.rb,
lib/octokit/client/refs.rb,
lib/octokit/client/feeds.rb,
lib/octokit/client/gists.rb,
lib/octokit/client/hooks.rb,
lib/octokit/client/pages.rb,
lib/octokit/client/stats.rb,
lib/octokit/client/users.rb,
lib/octokit/client/emojis.rb,
lib/octokit/client/events.rb,
lib/octokit/client/issues.rb,
lib/octokit/client/labels.rb,
lib/octokit/client/search.rb,
lib/octokit/client/commits.rb,
lib/octokit/client/objects.rb,
lib/octokit/client/reviews.rb,
lib/octokit/client/traffic.rb,
lib/octokit/client/contents.rb,
lib/octokit/client/licenses.rb,
lib/octokit/client/markdown.rb,
lib/octokit/client/projects.rb,
lib/octokit/client/releases.rb,
lib/octokit/client/statuses.rb,
lib/octokit/client/downloads.rb,
lib/octokit/client/gitignore.rb,
lib/octokit/client/reactions.rb,
lib/octokit/client/milestones.rb,
lib/octokit/client/rate_limit.rb,
lib/octokit/client/deployments.rb,
lib/octokit/client/marketplace.rb,
lib/octokit/client/repositories.rb,
lib/octokit/client/legacy_search.rb,
lib/octokit/client/notifications.rb,
lib/octokit/client/organizations.rb,
lib/octokit/client/pull_requests.rb,
lib/octokit/client/source_import.rb,
lib/octokit/client/authorizations.rb,
lib/octokit/client/pub_sub_hubbub.rb,
lib/octokit/client/service_status.rb,
lib/octokit/client/commit_comments.rb,
lib/octokit/client/repository_invitations.rb

Overview

Client for the GitHub API

Defined Under Namespace

Modules: Apps, Authorizations, CommitComments, Commits, Contents, Deployments, Downloads, Emojis, Events, Feeds, Gists, Gitignore, Hooks, Issues, Labels, LegacySearch, Licenses, Markdown, Marketplace, Meta, Milestones, Notifications, Objects, Organizations, Pages, Projects, PubSubHubbub, PullRequests, RateLimit, Reactions, Refs, Releases, Repositories, RepositoryInvitations, Reviews, Say, Search, ServiceStatus, SourceImport, Stats, Statuses, Traffic, Users

Constant Summary collapse

CONVENIENCE_HEADERS =

Header keys that can be passed in options hash to Octokit::Connection#get,Octokit::Connection#head

Set.new([:accept, :content_type])

Constants included from Preview

Preview::PREVIEW_TYPES

Instance Attribute Summary

Attributes included from Configurable

#access_token, #api_endpoint, #auto_paginate, #bearer_token, #client_id, #client_secret, #connection_options, #default_media_type, #login, #management_console_endpoint, #management_console_password, #middleware, #netrc, #netrc_file, #password, #per_page, #proxy, #ssl_verify_mode, #user_agent, #web_endpoint

Instance Method Summary collapse

Methods included from Users

#add_email, #add_key, #all_users, #emails, #exchange_code_for_token, #follow, #followers, #following, #follows?, #key, #keys, #remove_email, #remove_key, #starred, #starred?, #subscriptions, #unfollow, #update_key, #update_user, #user, #user_keys, #validate_credentials

Methods included from Traffic

#clones, #top_paths, #top_referrers, #views

Methods included from Statuses

#combined_status, #create_status, #statuses

Methods included from Stats

#code_frequency_stats, #commit_activity_stats, #contributors_stats, #participation_stats, #punch_card_stats

Methods included from SourceImport

#cancel_source_import, #map_source_import_commit_author, #set_source_import_lfs_preference, #source_import_commit_authors, #source_import_large_files, #source_import_progress, #start_source_import, #update_source_import

Methods included from ServiceStatus

#github_status, #github_status_last_message, #github_status_messages

Methods included from Search

#search_code, #search_commits, #search_issues, #search_repositories, #search_users

Methods included from Say

#say

Methods included from Reviews

#create_pull_request_review, #delete_pull_request_review, #delete_pull_request_review_request, #dismiss_pull_request_review, #pull_request_review, #pull_request_review_comments, #pull_request_review_requests, #pull_request_reviews, #request_pull_request_review, #submit_pull_request_review

Methods included from RepositoryInvitations

#accept_repository_invitation, #decline_repository_invitation, #delete_repository_invitation, #invite_user_to_repository, #repository_invitations, #update_repository_invitation, #user_repository_invitations

Methods included from Repositories

#add_collaborator, #add_deploy_key, #all_repositories, #branch, #branch_protection, #branches, #check_assignee, #collaborator?, #collaborators, #contributors, #create_repository, #delete_repository, #delete_subscription, #deploy_key, #deploy_keys, #edit_deploy_key, #edit_repository, #fork, #forks, #languages, #permission_level, #protect_branch, #remove_collaborator, #remove_deploy_key, #replace_all_topics, #repositories, #repository, #repository?, #repository_assignees, #repository_teams, #set_private, #set_public, #star, #stargazers, #subscribers, #subscription, #tags, #topics, #unprotect_branch, #unstar, #unwatch, #update_subscription, #watch, #watchers

Methods included from Releases

#create_release, #delete_release, #delete_release_asset, #latest_release, #release, #release_asset, #release_assets, #release_for_tag, #releases, #update_release, #update_release_asset, #upload_asset

Methods included from Refs

#create_ref, #delete_branch, #delete_ref, #ref, #refs, #update_branch, #update_ref

Methods included from Reactions

#commit_comment_reactions, #create_commit_comment_reaction, #create_issue_comment_reaction, #create_issue_reaction, #create_pull_request_review_comment_reaction, #delete_reaction, #issue_comment_reactions, #issue_reactions, #pull_request_review_comment_reactions

Methods included from RateLimit

#rate_limit, #rate_limit!, #rate_limit_remaining, #rate_limit_remaining!

Methods included from PullRequests

#close_pull_request, #create_pull_request, #create_pull_request_comment, #create_pull_request_comment_reply, #create_pull_request_for_issue, #delete_pull_request_comment, #merge_pull_request, #pull_merged?, #pull_request, #pull_request_comment, #pull_request_comments, #pull_request_commits, #pull_request_files, #pull_requests, #pull_requests_comments, #update_pull_request, #update_pull_request_comment

Methods included from PubSubHubbub

#subscribe, #subscribe_service_hook, #unsubscribe, #unsubscribe_service_hook

Methods included from Projects

#column_cards, #create_org_project, #create_project, #create_project_card, #create_project_column, #delete_project, #delete_project_card, #delete_project_column, #move_project_card, #move_project_column, #org_projects, #project, #project_card, #project_column, #project_columns, #projects, #update_project, #update_project_card, #update_project_column

Methods included from Pages

#latest_pages_build, #pages, #pages_build, #pages_builds, #request_page_build

Methods included from Organizations

#add_team_member, #add_team_membership, #add_team_repository, #all_organizations, #child_teams, #convert_to_outside_collaborator, #create_team, #delete_migration_archive, #delete_team, #migration_archive_url, #migration_status, #migrations, #organization, #organization_invitations, #organization_member?, #organization_members, #organization_membership, #organization_memberships, #organization_public_member?, #organization_public_members, #organization_repositories, #organization_teams, #organizations, #outside_collaborators, #publicize_membership, #remove_organization_member, #remove_organization_membership, #remove_outside_collaborator, #remove_team_member, #remove_team_membership, #remove_team_repository, #start_migration, #team, #team_invitations, #team_member?, #team_members, #team_membership, #team_repositories, #team_repository?, #unlock_repository, #unpublicize_membership, #update_organization, #update_organization_membership, #update_team, #user_teams

Methods included from Objects

#blob, #create_blob, #create_tag, #create_tree, #tag, #tree

Methods included from Notifications

#delete_thread_subscription, #mark_notifications_as_read, #mark_repository_notifications_as_read, #mark_thread_as_read, #notifications, #repository_notifications, #thread_notifications, #thread_subscription, #update_thread_subscription

Methods included from Milestones

#create_milestone, #delete_milestone, #list_milestones, #milestone, #update_milestone

Methods included from Marketplace

#list_accounts_for_plan, #list_plans, #marketplace_purchases, #plan_for_account

Methods included from Markdown

#markdown

Methods included from Meta

#meta

Methods included from Licenses

#license, #licenses, #repository_license_contents

Methods included from LegacySearch

#legacy_search_issues, #legacy_search_repositories, #legacy_search_users

Methods included from Labels

#add_label, #add_labels_to_an_issue, #delete_label!, #label, #labels, #labels_for_issue, #labels_for_milestone, #remove_all_labels, #remove_label, #replace_all_labels, #update_label

Methods included from Issues

#add_assignees, #add_comment, #close_issue, #create_issue, #delete_comment, #issue, #issue_comment, #issue_comments, #issue_timeline, #issues_comments, #list_issues, #lock_issue, #org_issues, #remove_assignees, #reopen_issue, #unlock_issue, #update_comment, #update_issue, #user_issues

Methods included from Apps

#add_repository_to_app_installation, #add_repository_to_integration_installation, #create_app_installation_access_token, #create_integration_installation_access_token, #find_app_installations, #find_installation_repositories_for_user, #find_integration_installations, #find_organization_installation, #find_repository_installation, #find_user_installation, #find_user_installations, #installation, #list_app_installation_repositories, #list_integration_installation_repositories, #remove_repository_from_app_installation, #remove_repository_from_integration_installation

Methods included from Hooks

#available_hooks, #create_hook, #create_org_hook, #edit_hook, #edit_org_hook, #hook, #hooks, #org_hook, #org_hooks, #parse_payload, #ping_hook, #ping_org_hook, #remove_hook, #remove_org_hook, #test_hook

Methods included from Gitignore

#gitignore_template, #gitignore_templates

Methods included from Gists

#create_gist, #create_gist_comment, #delete_gist, #delete_gist_comment, #edit_gist, #fork_gist, #gist, #gist_comment, #gist_comments, #gist_commits, #gist_forks, #gist_starred?, #gists, #public_gists, #star_gist, #starred_gists, #unstar_gist, #update_gist_comment

Methods included from Feeds

#feed, #feeds

Methods included from Events

#issue_event, #issue_events, #organization_events, #organization_public_events, #public_events, #received_events, #received_public_events, #repository_events, #repository_issue_events, #repository_network_events, #user_events, #user_public_events

Methods included from Emojis

#emojis

Methods included from Downloads

#delete_download, #download, #downloads

Methods included from Deployments

#create_deployment, #create_deployment_status, #deployment, #deployment_statuses, #deployments

Methods included from Contents

#archive_link, #contents, #create_contents, #delete_contents, #readme, #update_contents

Methods included from CommitComments

#commit_comment, #commit_comments, #create_commit_comment, #delete_commit_comment, #list_commit_comments, #update_commit_comment

Methods included from Commits

#commit, #commits, #commits_before, #commits_between, #commits_on, #commits_since, #compare, #create_commit, #git_commit, #merge

Methods included from Authorizations

#authorization, #authorizations, #authorize_url, #check_application_authorization, #create_authorization, #delete_authorization, #reset_application_authorization, #revoke_all_application_authorizations, #revoke_application_authorization, #scopes, #update_authorization

Methods included from Warnable

#octokit_warn

Methods included from Preview

#ensure_api_media_type, #warn_preview

Methods included from Connection

#agent, #delete, #get, #head, #last_response, #paginate, #patch, #post, #put, #root

Methods included from Authentication

#application_authenticated?, #basic_authenticated?, #bearer_authenticated?, #token_authenticated?, #user_authenticated?

Methods included from Configurable

#configure, keys, #netrc?, #reset!, #same_options?

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client



117
118
119
120
121
122
123
124
# File 'lib/octokit/client.rb', line 117

def initialize(options = {})
  # Use options passed in, but fall back to module defaults
  Octokit::Configurable.keys.each do |key|
    instance_variable_set(:"@#{key}", options[key] || Octokit.instance_variable_get(:"@#{key}"))
  end

   unless user_authenticated? || application_authenticated?
end

Instance Method Details

#access_token=(value) ⇒ Object

Set OAuth access token for authentication

Parameters:

  • value (String)

    40 character GitHub OAuth access token



191
192
193
194
# File 'lib/octokit/client.rb', line 191

def access_token=(value)
  reset_agent
  @access_token = value
end

#as_app(key = client_id, secret = client_secret) {|app_client| ... } ⇒ Object

Duplicate client using client_id and client_secret as Basic Authentication credentials.

Examples:

Octokit.client_id = "foo"
Octokit.client_secret = "bar"

# GET https://api.github.com/?client_id=foo&client_secret=bar
Octokit.get "/"

Octokit.client.as_app do |client|
  # GET https://foo:bar@api.github.com/
  client.get "/"
end

Yields:

  • (app_client)


160
161
162
163
164
165
166
167
168
169
170
# File 'lib/octokit/client.rb', line 160

def as_app(key = client_id, secret = client_secret, &block)
  if key.to_s.empty? || secret.to_s.empty?
    raise ApplicationCredentialsRequired, "client_id and client_secret required"
  end
  app_client = self.dup
  app_client.client_id = app_client.client_secret = nil
  app_client.    = key
  app_client.password = secret

  yield app_client if block_given?
end

#bearer_token=(value) ⇒ Object

Set Bearer Token for authentication

Parameters:

  • value (String)

    JWT



199
200
201
202
# File 'lib/octokit/client.rb', line 199

def bearer_token=(value)
  reset_agent
  @bearer_token = value
end

#client_id=(value) ⇒ Object

Set OAuth app client_id

Parameters:

  • value (String)

    20 character GitHub OAuth app client_id



207
208
209
210
# File 'lib/octokit/client.rb', line 207

def client_id=(value)
  reset_agent
  @client_id = value
end

#client_secret=(value) ⇒ Object

Set OAuth app client_secret

Parameters:

  • value (String)

    40 character GitHub OAuth app client_secret



215
216
217
218
# File 'lib/octokit/client.rb', line 215

def client_secret=(value)
  reset_agent
  @client_secret = value
end

#client_without_redirects(options = {}) ⇒ Object



220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/octokit/client.rb', line 220

def client_without_redirects(options = {})
  conn_opts = @connection_options
  conn_opts[:url] = @api_endpoint
  conn_opts[:builder] = @middleware.dup if @middleware
  conn_opts[:proxy] = @proxy if @proxy
  conn_opts[:ssl] = { :verify_mode => @ssl_verify_mode } if @ssl_verify_mode
  conn = Faraday.new(conn_opts) do |http|
    if basic_authenticated?
      http.basic_auth(@login, @password)
    elsif token_authenticated?
      http.authorization 'token', @access_token
    elsif bearer_authenticated?
      http.authorization 'Bearer', @bearer_token
    end
    http.headers['accept'] = options[:accept] if options.key?(:accept)
  end
  conn.builder.delete(Octokit::Middleware::FollowRedirects)

  conn
end

#inspectString

Text representation of the client, masking tokens and passwords

Returns:

  • (String)


129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/octokit/client.rb', line 129

def inspect
  inspected = super

  # mask password
  inspected = inspected.gsub! @password, "*******" if @password
  inspected = inspected.gsub! @management_console_password, "*******" if @management_console_password
  inspected = inspected.gsub! @bearer_token, '********' if @bearer_token
  # Only show last 4 of token, secret
  if @access_token
    inspected = inspected.gsub! @access_token, "#{'*'*36}#{@access_token[36..-1]}"
  end
  if @client_secret
    inspected = inspected.gsub! @client_secret, "#{'*'*36}#{@client_secret[36..-1]}"
  end

  inspected
end

#login=(value) ⇒ Object

Set username for authentication

Parameters:

  • value (String)

    GitHub username



175
176
177
178
# File 'lib/octokit/client.rb', line 175

def login=(value)
  reset_agent
  @login = value
end

#password=(value) ⇒ Object

Set password for authentication

Parameters:

  • value (String)

    GitHub password



183
184
185
186
# File 'lib/octokit/client.rb', line 183

def password=(value)
  reset_agent
  @password = value
end