github_api 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +20 -0
- data/README.rdoc +228 -0
- data/Rakefile +52 -0
- data/features/github_api.feature +50 -0
- data/features/options.feature +4 -0
- data/features/pagination.feature +4 -0
- data/features/step_definitions/github_api_steps.rb +11 -0
- data/features/support/env.rb +13 -0
- data/lib/github_api.rb +73 -0
- data/lib/github_api/api.rb +175 -0
- data/lib/github_api/api/utils.rb +9 -0
- data/lib/github_api/authorization.rb +73 -0
- data/lib/github_api/authorizations.rb +119 -0
- data/lib/github_api/cache_control.rb +19 -0
- data/lib/github_api/client.rb +55 -0
- data/lib/github_api/compatibility.rb +23 -0
- data/lib/github_api/configuration.rb +96 -0
- data/lib/github_api/connection.rb +75 -0
- data/lib/github_api/core_ext/array.rb +14 -0
- data/lib/github_api/core_ext/hash.rb +42 -0
- data/lib/github_api/error.rb +35 -0
- data/lib/github_api/events.rb +202 -0
- data/lib/github_api/gists.rb +200 -0
- data/lib/github_api/gists/comments.rb +86 -0
- data/lib/github_api/git_data.rb +26 -0
- data/lib/github_api/git_data/blobs.rb +51 -0
- data/lib/github_api/git_data/commits.rb +78 -0
- data/lib/github_api/git_data/references.rb +113 -0
- data/lib/github_api/git_data/tags.rb +78 -0
- data/lib/github_api/git_data/trees.rb +89 -0
- data/lib/github_api/issues.rb +215 -0
- data/lib/github_api/issues/comments.rb +123 -0
- data/lib/github_api/issues/events.rb +54 -0
- data/lib/github_api/issues/labels.rb +191 -0
- data/lib/github_api/issues/milestones.rb +140 -0
- data/lib/github_api/mime_type.rb +55 -0
- data/lib/github_api/orgs.rb +95 -0
- data/lib/github_api/orgs/members.rb +120 -0
- data/lib/github_api/orgs/teams.rb +245 -0
- data/lib/github_api/pull_requests.rb +224 -0
- data/lib/github_api/pull_requests/comments.rb +144 -0
- data/lib/github_api/repos.rb +286 -0
- data/lib/github_api/repos/collaborators.rb +81 -0
- data/lib/github_api/repos/commits.rb +180 -0
- data/lib/github_api/repos/downloads.rb +155 -0
- data/lib/github_api/repos/forks.rb +48 -0
- data/lib/github_api/repos/hooks.rb +174 -0
- data/lib/github_api/repos/keys.rb +104 -0
- data/lib/github_api/repos/pub_sub_hubbub.rb +102 -0
- data/lib/github_api/repos/watching.rb +94 -0
- data/lib/github_api/request.rb +84 -0
- data/lib/github_api/request/basic_auth.rb +31 -0
- data/lib/github_api/request/caching.rb +33 -0
- data/lib/github_api/request/oauth2.rb +33 -0
- data/lib/github_api/response.rb +28 -0
- data/lib/github_api/response/helpers.rb +14 -0
- data/lib/github_api/response/jsonize.rb +26 -0
- data/lib/github_api/response/mashify.rb +24 -0
- data/lib/github_api/response/raise_error.rb +33 -0
- data/lib/github_api/result.rb +42 -0
- data/lib/github_api/users.rb +84 -0
- data/lib/github_api/users/emails.rb +49 -0
- data/lib/github_api/users/followers.rb +98 -0
- data/lib/github_api/users/keys.rb +84 -0
- data/lib/github_api/version.rb +12 -0
- data/spec/README.rdoc +22 -0
- data/spec/coverage_adapter.rb +15 -0
- data/spec/fixtures/auths/authorization.json +14 -0
- data/spec/fixtures/auths/authorizations.json +16 -0
- data/spec/fixtures/events/events.json +29 -0
- data/spec/fixtures/issues/comment.json +13 -0
- data/spec/fixtures/issues/comments.json +15 -0
- data/spec/fixtures/issues/event.json +13 -0
- data/spec/fixtures/issues/events.json +15 -0
- data/spec/fixtures/issues/issue.json +56 -0
- data/spec/fixtures/issues/issues.json +58 -0
- data/spec/fixtures/issues/milestone.json +18 -0
- data/spec/fixtures/issues/milestones.json +20 -0
- data/spec/fixtures/orgs/members.json +9 -0
- data/spec/fixtures/orgs/org.json +18 -0
- data/spec/fixtures/orgs/orgs.json +8 -0
- data/spec/fixtures/orgs/team.json +8 -0
- data/spec/fixtures/orgs/team_repos.json +29 -0
- data/spec/fixtures/orgs/teams.json +7 -0
- data/spec/fixtures/repos/branches.json +9 -0
- data/spec/fixtures/repos/collaborators.json +8 -0
- data/spec/fixtures/repos/commit.json +53 -0
- data/spec/fixtures/repos/commit_comment.json +16 -0
- data/spec/fixtures/repos/commit_comments.json +18 -0
- data/spec/fixtures/repos/commits.json +27 -0
- data/spec/fixtures/repos/contributors.json +8 -0
- data/spec/fixtures/repos/download.json +10 -0
- data/spec/fixtures/repos/download_s3.json +21 -0
- data/spec/fixtures/repos/downloads.json +12 -0
- data/spec/fixtures/repos/fork.json +27 -0
- data/spec/fixtures/repos/forks.json +29 -0
- data/spec/fixtures/repos/hook.json +15 -0
- data/spec/fixtures/repos/hooks.json +10 -0
- data/spec/fixtures/repos/key.json +6 -0
- data/spec/fixtures/repos/keys.json +8 -0
- data/spec/fixtures/repos/languages.json +4 -0
- data/spec/fixtures/repos/repo.json +90 -0
- data/spec/fixtures/repos/repo_comments.json +18 -0
- data/spec/fixtures/repos/repos.json +29 -0
- data/spec/fixtures/repos/tags.json +11 -0
- data/spec/fixtures/repos/teams.json +7 -0
- data/spec/fixtures/repos/watched.json +29 -0
- data/spec/fixtures/repos/watchers.json +8 -0
- data/spec/fixtures/users/user.json +32 -0
- data/spec/github/api_spec.rb +25 -0
- data/spec/github/authorization_spec.rb +176 -0
- data/spec/github/authorizations_spec.rb +242 -0
- data/spec/github/client_spec.rb +50 -0
- data/spec/github/core_ext/hash_spec.rb +44 -0
- data/spec/github/events_spec.rb +491 -0
- data/spec/github/gists/comments_spec.rb +5 -0
- data/spec/github/gists_spec.rb +5 -0
- data/spec/github/git_data/blobs_spec.rb +5 -0
- data/spec/github/git_data/commits_spec.rb +5 -0
- data/spec/github/git_data/references_spec.rb +5 -0
- data/spec/github/git_data/tags_spec.rb +5 -0
- data/spec/github/git_data/trees_spec.rb +5 -0
- data/spec/github/git_data_spec.rb +5 -0
- data/spec/github/issues/comments_spec.rb +254 -0
- data/spec/github/issues/events_spec.rb +153 -0
- data/spec/github/issues/labels_spec.rb +5 -0
- data/spec/github/issues/milestones_spec.rb +260 -0
- data/spec/github/issues_spec.rb +287 -0
- data/spec/github/mime_type_spec.rb +70 -0
- data/spec/github/orgs/members_spec.rb +275 -0
- data/spec/github/orgs/teams_spec.rb +563 -0
- data/spec/github/orgs_spec.rb +160 -0
- data/spec/github/repos/collaborators_spec.rb +169 -0
- data/spec/github/repos/commits_spec.rb +424 -0
- data/spec/github/repos/downloads_spec.rb +247 -0
- data/spec/github/repos/forks_spec.rb +108 -0
- data/spec/github/repos/hooks_spec.rb +333 -0
- data/spec/github/repos/keys_spec.rb +217 -0
- data/spec/github/repos/pub_sub_hubbub_spec.rb +83 -0
- data/spec/github/repos/watching_spec.rb +222 -0
- data/spec/github/repos_spec.rb +571 -0
- data/spec/github/result_spec.rb +43 -0
- data/spec/github/users_spec.rb +140 -0
- data/spec/github_spec.rb +109 -0
- data/spec/spec_helper.rb +86 -0
- data/spec/support/base.rb +13 -0
- metadata +149 -4
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'github_api/configuration'
|
|
4
|
+
require 'github_api/connection'
|
|
5
|
+
require 'github_api/request'
|
|
6
|
+
require 'github_api/mime_type'
|
|
7
|
+
require 'github_api/core_ext/hash'
|
|
8
|
+
require 'github_api/core_ext/array'
|
|
9
|
+
require 'github_api/compatibility'
|
|
10
|
+
|
|
11
|
+
module Github
|
|
12
|
+
|
|
13
|
+
# @private
|
|
14
|
+
class API
|
|
15
|
+
include Authorization
|
|
16
|
+
include MimeType
|
|
17
|
+
include Connection
|
|
18
|
+
include Request
|
|
19
|
+
|
|
20
|
+
VALID_API_KEYS = [
|
|
21
|
+
:per_page,
|
|
22
|
+
:pagination
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
attr_reader *Configuration::VALID_OPTIONS_KEYS
|
|
26
|
+
attr_accessor *VALID_API_KEYS
|
|
27
|
+
|
|
28
|
+
# Callback to update global configuration options
|
|
29
|
+
class_eval do
|
|
30
|
+
Configuration::VALID_OPTIONS_KEYS.each do |key|
|
|
31
|
+
define_method "#{key}=" do |arg|
|
|
32
|
+
self.instance_variable_set("@#{key}", arg)
|
|
33
|
+
Github.send("#{key}=", arg)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Creates new API
|
|
39
|
+
def initialize(options = {})
|
|
40
|
+
options = Github.options.merge(options)
|
|
41
|
+
Configuration::VALID_OPTIONS_KEYS.each do |key|
|
|
42
|
+
send("#{key}=", options[key])
|
|
43
|
+
end
|
|
44
|
+
_process_basic_auth(options[:basic_auth])
|
|
45
|
+
client if client_id? && client_secret?
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
# Extract login and password from basic_auth parameter
|
|
51
|
+
def _process_basic_auth(auth)
|
|
52
|
+
case auth
|
|
53
|
+
when String
|
|
54
|
+
login = auth.split(':').first
|
|
55
|
+
password = auth.split(':').last
|
|
56
|
+
when Hash
|
|
57
|
+
login = auth[:login]
|
|
58
|
+
password = auth[:password]
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Responds to attribute query
|
|
63
|
+
def method_missing(method, *args, &block) # :nodoc:
|
|
64
|
+
if method.to_s =~ /^(.*)\?$/
|
|
65
|
+
return !self.send($1.to_s).nil?
|
|
66
|
+
else
|
|
67
|
+
super
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def _validate_inputs(required, provided) # :nodoc:
|
|
72
|
+
required.all? do |key|
|
|
73
|
+
provided.has_key? key
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def _validate_presence_of(*params) # :nodoc:
|
|
78
|
+
params.each do |param|
|
|
79
|
+
raise ArgumentError, "parameter cannot be nil" if param.nil?
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def _validate_user_repo_params(user_name, repo_name) # :nodoc:
|
|
84
|
+
raise ArgumentError, "[user] parameter cannot be nil" if user_name.nil?
|
|
85
|
+
raise ArgumentError, "[repo] parameter cannot be nil" if repo_name.nil?
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def _update_user_repo_params(user_name, repo_name=nil) # :nodoc:
|
|
89
|
+
self.user = user_name || self.user
|
|
90
|
+
self.repo = repo_name || self.repo
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def _merge_user_into_params!(params) # :nodoc:
|
|
94
|
+
params.merge!({ 'user' => self.user }) if user?
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def _merge_user_repo_into_params!(params) # :nodoc:
|
|
98
|
+
{ 'user' => self.user, 'repo' => self.repo }.merge!(params)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Turns any keys from nested hashes including nested arrays into strings
|
|
102
|
+
def _normalize_params_keys(params) # :nodoc:
|
|
103
|
+
case params
|
|
104
|
+
when Hash
|
|
105
|
+
params.keys.each do |k|
|
|
106
|
+
params[k.to_s] = params.delete(k)
|
|
107
|
+
_normalize_params_keys(params[k.to_s])
|
|
108
|
+
end
|
|
109
|
+
when Array
|
|
110
|
+
params.map! do |el|
|
|
111
|
+
_normalize_params_keys(el)
|
|
112
|
+
end
|
|
113
|
+
else
|
|
114
|
+
params.to_s
|
|
115
|
+
end
|
|
116
|
+
return params
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def _filter_params_keys(keys, params) # :nodoc:
|
|
120
|
+
params.reject! { |k,v| !keys.include? k }
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def _hash_traverse(hash, &block)
|
|
124
|
+
hash.each do |key, val|
|
|
125
|
+
block.call(key)
|
|
126
|
+
case val
|
|
127
|
+
when Hash
|
|
128
|
+
val.keys.each do |k|
|
|
129
|
+
_hash_traverse(val, &block)
|
|
130
|
+
end
|
|
131
|
+
when Array
|
|
132
|
+
val.each do |item|
|
|
133
|
+
_hash_traverse(item, &block)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
return hash
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def _validate_params_values(options, params) # :nodoc:
|
|
141
|
+
params.each do |k, v|
|
|
142
|
+
next unless options.keys.include?(k)
|
|
143
|
+
if options[k].is_a?(Array) && !options[k].include?(params[k])
|
|
144
|
+
raise ArgumentError, "Wrong value for #{k}, allowed: #{options[k].join(', ')}"
|
|
145
|
+
elsif options[k].is_a?(Regexp) && !(options[k] =~ params[k])
|
|
146
|
+
raise ArgumentError, "String does not match the parameter value."
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def _merge_mime_type(resource, params) # :nodoc:
|
|
152
|
+
params['resource'] = resource
|
|
153
|
+
params['mime_type'] = params['mime_type'] || :raw
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# TODO add to core extensions
|
|
157
|
+
def _extract_parameters(array)
|
|
158
|
+
if array.last.is_a?(Hash) && array.last.instance_of?(Hash)
|
|
159
|
+
pop
|
|
160
|
+
else
|
|
161
|
+
{}
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Passes configuration options to instantiated class
|
|
166
|
+
def _create_instance(klass, options)
|
|
167
|
+
options.symbolize_keys!
|
|
168
|
+
klass.new(options)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def _token_required
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
end # API
|
|
175
|
+
end # Github
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module Github
|
|
4
|
+
module Authorization
|
|
5
|
+
|
|
6
|
+
attr_accessor :scopes
|
|
7
|
+
|
|
8
|
+
# Setup OAuth2 instance
|
|
9
|
+
def client
|
|
10
|
+
@client ||= ::OAuth2::Client.new(client_id, client_secret,
|
|
11
|
+
:site => 'https://github.com',
|
|
12
|
+
:authorize_url => 'login/oauth/authorize',
|
|
13
|
+
:token_url => 'login/oauth/access_token'
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Strategy token
|
|
18
|
+
def auth_code
|
|
19
|
+
_verify_client
|
|
20
|
+
@client.auth_code
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Sends authorization request to GitHub.
|
|
24
|
+
# = Parameters
|
|
25
|
+
# * <tt>:redirect_uri</tt> - Required string.
|
|
26
|
+
# * <tt>:scope</tt> - Optional string. Comma separated list of scopes.
|
|
27
|
+
# Available scopes:
|
|
28
|
+
# * (no scope) - public read-only access (includes public user profile info, public repo info, and gists).
|
|
29
|
+
# * <tt>user</tt> - DB read/write access to profile info only.
|
|
30
|
+
# * <tt>public_repo</tt> - DB read/write access, and Git read access to public repos.
|
|
31
|
+
# * <tt>repo</tt> - DB read/write access, and Git read access to public and private repos.
|
|
32
|
+
# * <tt>gist</tt> - write access to gists.
|
|
33
|
+
#
|
|
34
|
+
def authorize_url(params = {})
|
|
35
|
+
_verify_client
|
|
36
|
+
@client.auth_code.authorize_url(params)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Makes request to token endpoint and retrieves access token value
|
|
40
|
+
def get_token(authorization_code, params = {})
|
|
41
|
+
_verify_client
|
|
42
|
+
@client.auth_code.get_token(authorization_code, params)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Check whether authentication credentials are present
|
|
46
|
+
def authenticated?
|
|
47
|
+
basic_authed? || oauth_token?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Check whether basic authentication credentials are present
|
|
51
|
+
def basic_authed?
|
|
52
|
+
basic_auth? || (login? && password?)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Select authentication parameters
|
|
56
|
+
def authentication
|
|
57
|
+
if login? && password?
|
|
58
|
+
{ :login => login, :password => password }
|
|
59
|
+
elsif basic_auth?
|
|
60
|
+
{ :basic_auth => basic_auth }
|
|
61
|
+
else
|
|
62
|
+
{ }
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
def _verify_client # :nodoc:
|
|
69
|
+
raise ArgumentError, 'Need to provide client_id and client_secret' unless client_id? && client_secret?
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end # Authorization
|
|
73
|
+
end # Github
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module Github
|
|
4
|
+
class Authorizations < API
|
|
5
|
+
|
|
6
|
+
VALID_AUTH_PARAM_NAMES = %w[
|
|
7
|
+
scopes
|
|
8
|
+
add_scopes
|
|
9
|
+
remove_scopes
|
|
10
|
+
].freeze
|
|
11
|
+
|
|
12
|
+
# Creates new OAuth Authorizations API
|
|
13
|
+
def initialize(options = {})
|
|
14
|
+
super(options)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# List authorizations
|
|
18
|
+
#
|
|
19
|
+
# = Examples
|
|
20
|
+
# @github = Github.new :basic_auth => 'login:password'
|
|
21
|
+
# @github.oauth.authorizations
|
|
22
|
+
# @github.oauth.authorizations { |auth| ... }
|
|
23
|
+
#
|
|
24
|
+
def authorizations(params={})
|
|
25
|
+
_check_if_authenticated
|
|
26
|
+
_normalize_params_keys(params)
|
|
27
|
+
|
|
28
|
+
response = get("/authorizations", params)
|
|
29
|
+
return response unless block_given?
|
|
30
|
+
response.each { |el| yield el }
|
|
31
|
+
end
|
|
32
|
+
alias :auths :authorizations
|
|
33
|
+
alias :list_auths :authorizations
|
|
34
|
+
alias :list_authorizations :authorizations
|
|
35
|
+
|
|
36
|
+
# Get a single authorization
|
|
37
|
+
#
|
|
38
|
+
# = Examples
|
|
39
|
+
# @github = Github.new :basic_auth => 'login:password'
|
|
40
|
+
# @github.oauth.authorization 'authorization-id'
|
|
41
|
+
#
|
|
42
|
+
def authorization(authorization_id, params={})
|
|
43
|
+
_validate_presence_of(authorization_id)
|
|
44
|
+
_check_if_authenticated
|
|
45
|
+
_normalize_params_keys params
|
|
46
|
+
|
|
47
|
+
get "/authorizations/#{authorization_id}", params
|
|
48
|
+
end
|
|
49
|
+
alias :auth :authorization
|
|
50
|
+
alias :get_auth :authorization
|
|
51
|
+
alias :get_authorization :authorization
|
|
52
|
+
|
|
53
|
+
# Create a new authorization
|
|
54
|
+
#
|
|
55
|
+
# = Inputs
|
|
56
|
+
# * <tt>:scopes</tt> - Optional array - A list of scopes that this authorization is in.
|
|
57
|
+
# = Examples
|
|
58
|
+
# @github = Github.new :basic_auth => 'login:password'
|
|
59
|
+
# @github.oauth.create_authorization
|
|
60
|
+
# "scopes" => ["public_repo"]
|
|
61
|
+
#
|
|
62
|
+
def create_authorization(params={})
|
|
63
|
+
_check_if_authenticated
|
|
64
|
+
_normalize_params_keys(params)
|
|
65
|
+
_filter_params_keys(VALID_AUTH_PARAM_NAMES, params)
|
|
66
|
+
|
|
67
|
+
post("/authorizations", params)
|
|
68
|
+
end
|
|
69
|
+
alias :create_auth :create_authorization
|
|
70
|
+
|
|
71
|
+
# Update an existing authorization
|
|
72
|
+
#
|
|
73
|
+
# = Inputs
|
|
74
|
+
# * <tt>:scopes</tt> - Optional array - A list of scopes that this authorization is in.
|
|
75
|
+
# * <tt>:add_scopes</tt> - Optional array - A list of scopes to add to this authorization.
|
|
76
|
+
# * <tt>:remove_scopes</tt> - Optional array - A list of scopes to remove from this authorization.
|
|
77
|
+
#
|
|
78
|
+
# = Examples
|
|
79
|
+
# @github = Github.new :basic_auth => 'login:password'
|
|
80
|
+
# @github.oauth.update_authorization
|
|
81
|
+
# "add_scopes" => ["repo"],
|
|
82
|
+
#
|
|
83
|
+
def update_authorization(authorization_id, params={})
|
|
84
|
+
_check_if_authenticated
|
|
85
|
+
_validate_presence_of(authorization_id)
|
|
86
|
+
|
|
87
|
+
_normalize_params_keys(params)
|
|
88
|
+
_filter_params_keys(VALID_AUTH_PARAM_NAMES, params)
|
|
89
|
+
|
|
90
|
+
patch("/authorizations/#{authorization_id}", params)
|
|
91
|
+
end
|
|
92
|
+
alias :update_auth :update_authorization
|
|
93
|
+
|
|
94
|
+
# Delete an authorization
|
|
95
|
+
#
|
|
96
|
+
# = Examples
|
|
97
|
+
# @github.oauth.delete_authorization 'authorization-id'
|
|
98
|
+
#
|
|
99
|
+
def delete_authorization(authorization_id, params={})
|
|
100
|
+
_check_if_authenticated
|
|
101
|
+
_validate_presence_of(authorization_id)
|
|
102
|
+
|
|
103
|
+
_normalize_params_keys(params)
|
|
104
|
+
_filter_params_keys(VALID_AUTH_PARAM_NAMES, params)
|
|
105
|
+
|
|
106
|
+
delete("/authorizations/#{authorization_id}", params)
|
|
107
|
+
end
|
|
108
|
+
alias :delete_auth :delete_authorization
|
|
109
|
+
alias :remove_auth :delete_authorization
|
|
110
|
+
alias :remove_authorization :delete_authorization
|
|
111
|
+
|
|
112
|
+
private
|
|
113
|
+
|
|
114
|
+
def _check_if_authenticated
|
|
115
|
+
raise ArgumentError, 'You can only access authentication tokens through Basic Authentication' unless authenticated?
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end # Authorizations
|
|
119
|
+
end # Github
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Github
|
|
2
|
+
module CacheOptions
|
|
3
|
+
extend self
|
|
4
|
+
|
|
5
|
+
def self.option_accessor(key)
|
|
6
|
+
defined_method("#{key}=") { |value| }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def initialize_options(options={})
|
|
12
|
+
@default_options = {
|
|
13
|
+
'type' => :memoization,
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module Github
|
|
4
|
+
class Client < API
|
|
5
|
+
|
|
6
|
+
def gists(options = {})
|
|
7
|
+
@gists ||= _create_instance Github::Gists, options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# The Git Database API gives you access to read and write raw Git objects
|
|
11
|
+
# to your Git database on GitHub and to list and update your references
|
|
12
|
+
# (branch heads and tags).
|
|
13
|
+
def git_data(options = {})
|
|
14
|
+
@git_data ||= _create_instance Github::GitData, options
|
|
15
|
+
end
|
|
16
|
+
alias :git :git_data
|
|
17
|
+
|
|
18
|
+
def issues(options = {})
|
|
19
|
+
@issues ||= _create_instance Github::Issues, options
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def orgs(options = {})
|
|
23
|
+
@orgs ||= _create_instance Github::Orgs, options
|
|
24
|
+
end
|
|
25
|
+
alias :organizations :orgs
|
|
26
|
+
|
|
27
|
+
def pull_requests(options = {})
|
|
28
|
+
@pull_requests ||= _create_instance Github::PullRequests, options
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def repos(options = {})
|
|
32
|
+
@repos ||= _create_instance Github::Repos, options
|
|
33
|
+
end
|
|
34
|
+
alias :repositories :repos
|
|
35
|
+
|
|
36
|
+
# Many of the resources on the users API provide a shortcut for getting
|
|
37
|
+
# information about the currently authenticated user.
|
|
38
|
+
def users(options = {})
|
|
39
|
+
@users ||= _create_instance Github::Users, options
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# This is a read-only API to the GitHub events.
|
|
43
|
+
# These events power the various activity streams on the site.
|
|
44
|
+
def events(options = {})
|
|
45
|
+
@events ||= _create_instance Github::Events, options
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# An API for users to manage their own tokens. You can only access your own
|
|
49
|
+
# tokens, and only through Basic Authentication.
|
|
50
|
+
def oauth(options = {})
|
|
51
|
+
@oauth ||= _create_instance Github::Authorizations, options
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end # Client
|
|
55
|
+
end # Github
|