Class: Octokit::Client

Inherits:
Object
  • Object
show all
Includes:
Authentication, Authorizations, CommitComments, Commits, Contents, Downloads, Emojis, Events, Gists, Gitignore, Issues, Labels, LegacySearch, Markdown, Meta, Milestones, Notifications, Objects, Organizations, PubSubHubbub, PullRequests, RateLimit, Refs, Releases, Repositories, Say, Search, ServiceStatus, Stats, Statuses, Users, Configurable
Defined in:
lib/octokit/client.rb,
lib/octokit/client/say.rb,
lib/octokit/client/meta.rb,
lib/octokit/client/refs.rb,
lib/octokit/client/gists.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/contents.rb,
lib/octokit/client/markdown.rb,
lib/octokit/client/releases.rb,
lib/octokit/client/statuses.rb,
lib/octokit/client/downloads.rb,
lib/octokit/client/gitignore.rb,
lib/octokit/client/milestones.rb,
lib/octokit/client/rate_limit.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/authorizations.rb,
lib/octokit/client/pub_sub_hubbub.rb,
lib/octokit/client/service_status.rb,
lib/octokit/client/commit_comments.rb

Overview

Client for the GitHub API

Defined Under Namespace

Modules: Authorizations, CommitComments, Commits, Contents, Downloads, Emojis, Events, Gists, Gitignore, Issues, Labels, LegacySearch, Markdown, Meta, Milestones, Notifications, Objects, Organizations, PubSubHubbub, PullRequests, RateLimit, Refs, Releases, Repositories, Say, Search, ServiceStatus, Stats, Statuses, Users

Constant Summary collapse

CONVENIENCE_HEADERS =

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

Set.new [:accept, :content_type]

Constants included from ServiceStatus

ServiceStatus::STATUS_ROOT

Constants included from Releases

Releases::PREVIEW_MEDIA_TYPE

Instance Attribute Summary

Attributes included from Configurable

#access_token, #api_endpoint, #auto_paginate, #client_id, #client_secret, #connection_options, #default_media_type, #login, #middleware, #netrc, #netrc_file, #password, #per_page, #proxy, #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 Statuses

#create_status, #statuses

Methods included from Stats

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

Methods included from ServiceStatus

#github_status, #github_status_last_message, #github_status_messages

Methods included from Search

#search_code, #search_issues, #search_repositories, #search_users

Methods included from Say

#say

Methods included from Repositories

#add_collaborator, #add_deploy_key, #all_repositories, #branch, #branches, #check_assignee, #collaborators, #contributors, #create_hook, #create_repository, #delete_repository, #delete_subscription, #deploy_keys, #edit_hook, #edit_repository, #fork, #forks, #hook, #hooks, #languages, #remove_collaborator, #remove_deploy_key, #remove_hook, #repositories, #repository, #repository?, #repository_assignees, #repository_teams, #set_private, #set_public, #star, #stargazers, #subscribers, #subscription, #tags, #test_hook, #unstar, #unwatch, #update_subscription, #watch, #watchers

Methods included from Releases

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

Methods included from Refs

#create_ref, #delete_ref, #ref, #refs, #update_ref

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 Organizations

#add_team_member, #add_team_repository, #create_team, #delete_team, #organization, #organization_member?, #organization_members, #organization_public_member?, #organization_repositories, #organization_teams, #organizations, #publicize_membership, #remove_organization_member, #remove_team_member, #remove_team_repository, #team, #team_member?, #team_members, #team_repositories, #unpublicize_membership, #update_organization, #update_team

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 Markdown

#markdown

Methods included from Meta

#meta

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_comment, #close_issue, #create_issue, #delete_comment, #issue, #issue_comment, #issue_comments, #issues_comments, #list_issues, #org_issues, #reopen_issue, #update_comment, #update_issue, #user_issues

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_starred?, #gists, #public_gists, #star_gist, #starred_gists, #unstar_gist, #update_gist_comment

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

#create_download, #delete_download, #download, #downloads

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, #commit_comment, #commit_comments, #commits, #commits_before, #commits_between, #commits_on, #commits_since, #compare, #create_commit, #create_commit_comment, #delete_commit_comment, #list_commit_comments, #merge, #update_commit_comment

Methods included from Authorizations

#authorization, #authorizations, #create_authorization, #delete_authorization, #scopes, #update_authorization

Methods included from Configurable

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

Methods included from Authentication

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

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client.



83
84
85
86
87
88
89
90
# File 'lib/octokit/client.rb', line 83

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

#agentSawyer::Agent

Hypermedia agent for the GitHub API

Returns:

  • (Sawyer::Agent)


202
203
204
205
206
207
208
209
210
211
212
# File 'lib/octokit/client.rb', line 202

def agent
  @agent ||= Sawyer::Agent.new(api_endpoint, sawyer_options) do |http|
    http.headers[:accept] = default_media_type
    http.headers[:user_agent] = user_agent
    if basic_authenticated?
      http.basic_auth(@login, @password)
    elsif token_authenticated?
      http.authorization 'token', @access_token
    end
  end
end

#authorize_url(app_id, app_secret, options = {}) ⇒ String

Get the URL to authorize a user for an application via the web flow

Examples:

@client.authorize_url('xxxx', 'yyyy')

Parameters:

  • app_id (String)

    Client Id we received when our application was registered with GitHub.

  • app_secret (String)

    Client Secret we received when our application was registered with GitHub.

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :redirect_uri (String)

    The url to redirect to after authorizing.

  • :scope (String)

    The scopes to request from the user.

  • :state (String)

    A random string to protect against CSRF.

Returns:

  • (String)

    The url to redirect the user to authorize.

See Also:



142
143
144
145
146
147
148
149
150
151
# File 'lib/octokit/client/authorizations.rb', line 142

def authorize_url(app_id, app_secret, options = {})
  authorize_url = options.delete(:endpoint) || Octokit.web_endpoint
  authorize_url += "login/oauth/authorize?client_id=" + app_id + "&client_secret=" + app_secret

  options.each do |key, value|
    authorize_url += "&" + key.to_s + "=" + value
  end

  authorize_url
end

#delete(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP DELETE request

Parameters:

Returns:

  • (Sawyer::Resource)


160
161
162
# File 'lib/octokit/client.rb', line 160

def delete(url, options = {})
  request :delete, url, options
end

#get(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP GET request

Parameters:

Returns:

  • (Sawyer::Resource)


124
125
126
# File 'lib/octokit/client.rb', line 124

def get(url, options = {})
  request :get, url, parse_query_and_convenience_headers(options)
end

#head(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP HEAD request

Parameters:

Returns:

  • (Sawyer::Resource)


169
170
171
# File 'lib/octokit/client.rb', line 169

def head(url, options = {})
  request :head, url, parse_query_and_convenience_headers(options)
end

#inspectString

Text representation of the client, masking tokens and passwords

Returns:

  • (String)


103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/octokit/client.rb', line 103

def inspect
  inspected = super

  # mask password
  inspected = inspected.gsub! @password, "*******" if @password
  # 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

#last_responseSawyer::Response

Response for last HTTP request

Returns:

  • (Sawyer::Response)


224
225
226
# File 'lib/octokit/client.rb', line 224

def last_response
  @last_response
end

#paginate(url, options = {}) ⇒ Sawyer::Resource

Make one or more HTTP GET requests, optionally fetching the next page of results from URL in Link response header based on value in Octokit::Configurable#auto_paginate.

Parameters:

Returns:

  • (Sawyer::Resource)


180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/octokit/client.rb', line 180

def paginate(url, options = {})
  opts = parse_query_and_convenience_headers(options.dup)
  if @auto_paginate || @per_page
    opts[:query][:per_page] ||=  @per_page || (@auto_paginate ? 100 : nil)
  end

  data = request(:get, url, opts)

  if @auto_paginate && data.is_a?(Array)
    while @last_response.rels[:next] && rate_limit.remaining > 0
      @last_response = @last_response.rels[:next].get
      data.concat(@last_response.data) if @last_response.data.is_a?(Array)
    end

  end

  data
end

#patch(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP PATCH request

Parameters:

Returns:

  • (Sawyer::Resource)


151
152
153
# File 'lib/octokit/client.rb', line 151

def patch(url, options = {})
  request :patch, url, options
end

#post(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP POST request

Parameters:

Returns:

  • (Sawyer::Resource)


133
134
135
# File 'lib/octokit/client.rb', line 133

def post(url, options = {})
  request :post, url, options
end

#put(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP PUT request

Parameters:

Returns:

  • (Sawyer::Resource)


142
143
144
# File 'lib/octokit/client.rb', line 142

def put(url, options = {})
  request :put, url, options
end

#rootSawyer::Resource

Fetch the root resource for the API

Returns:

  • (Sawyer::Resource)


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

def root
  agent.start.data
end

#same_options?(opts) ⇒ Boolean

Compares client options to a Hash of requested options

Parameters:

  • opts (Hash)

    Options to compare with current client options

Returns:

  • (Boolean)


96
97
98
# File 'lib/octokit/client.rb', line 96

def same_options?(opts)
  opts.hash == options.hash
end