github_api_v3 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/README.md +3 -1
- data/github_api_v3.gemspec +2 -0
- data/lib/github_api_v3.rb +1 -1
- data/lib/github_api_v3/client.rb +22 -82
- data/lib/github_api_v3/client/repos.rb +160 -0
- data/lib/github_api_v3/client/users.rb +178 -0
- data/lib/github_api_v3/{configuration.rb → default.rb} +2 -4
- data/lib/github_api_v3/version.rb +1 -1
- data/spec/cassettes/GitHub_Client_Repos/_all_repos/returns_an_array_of_repositories.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_branch/returns_a_hash_of_branch_info.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_branches/returns_an_array_of_branches.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_contributors/returns_an_array_of_contributors.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_create_repo/creates_the_repo.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_create_repo/returns_a_hash.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_delete_repo/deletes_a_repo.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_languages/returns_a_hash_of_languages.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_languages/returns_an_array_of_languages.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_org_repos/returns_an_array_of_repos.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_repo/returns_a_repo_as_a_hash.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_repos/returns_an_array_of_repositories.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_repos/returns_an_array_of_repositories_for_authenticated_user.json +1 -0
- data/spec/cassettes/GitHub_Client_Repos/_tags/returns_an_array_of_tags.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_emails/returns_an_array_of_emails.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_events/returns_an_array_of_events.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_follow/follows_a_user.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_followers/returns_authenticated_users_followers_as_an_array.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_followers/returns_unauthenticated_users_followers_as_an_array.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_following/returns_an_array_of_followees.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_following_/returns_true_or_false.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_follows_/returns_a_boolean.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_unfollow/unfollows_a_user.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_user/gets_the_correct_user_info.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_user/returns_a_hash.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_users/returns_an_array.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/_users/returns_an_array_of_hashes.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/keys/returns_an_array_of_keys.json +1 -0
- data/spec/cassettes/GitHub_Client_Users/keys/returns_an_array_of_keys_for_authenticated_user.json +1 -0
- data/spec/config.sample.yml +3 -0
- data/spec/github_api_v3/client/repos_spec.rb +85 -0
- data/spec/github_api_v3/client/users_spec.rb +91 -0
- data/spec/github_api_v3/client_spec.rb +1 -39
- data/spec/spec_helper.rb +32 -0
- metadata +97 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ae00133104efbad81d712e9a61b52de37acce7e
|
4
|
+
data.tar.gz: 07808ae90ba4cd395dc489fc6abf803ad69288bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b27ea74d7310ccbae210186b9cd811aa3aad2eb2144a2677384f573f424a5327dac504acfe1430acf6ae5de80700794f3322d9fa5fa76e6d091bf4ec37d750c
|
7
|
+
data.tar.gz: 9c118dcad30804554236432f8a80a9e6349de7aac7d89ee2db12384642c6068ba436b402f1080096ef7a1fe3cae91f9dbd06975778215bf9f4c5d5d8897ed424
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -69,6 +69,9 @@ Some methods, such as retrieving private repos or emails, require authentication
|
|
69
69
|
```ruby
|
70
70
|
client = GitHub::Client.new(login: 'username', access_token: 'abcdefghijklmnopqrstuvwxyz12345')
|
71
71
|
client.emails # => ["email@example.com", "email2@example.com"]
|
72
|
+
client.repos # => #<Array:0x007fb8aa0d1a00>
|
73
|
+
client.follow('matz') # => true
|
74
|
+
client.user # => #<Hash:0x007fb8a9109d70>
|
72
75
|
```
|
73
76
|
|
74
77
|
More functionality to come.
|
@@ -77,7 +80,6 @@ More functionality to come.
|
|
77
80
|
|
78
81
|
The better question is... What's not to do? Any functionality of the API listed at [developer.github.com](http://developer.github.com/) that isn't currently in effect.
|
79
82
|
|
80
|
-
|
81
83
|
## Contributing
|
82
84
|
|
83
85
|
1. Fork it
|
data/github_api_v3.gemspec
CHANGED
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
|
+
spec.add_development_dependency 'webmock', '1.11.0'
|
25
|
+
spec.add_development_dependency 'vcr'
|
24
26
|
|
25
27
|
spec.add_dependency 'httparty', '0.11.0'
|
26
28
|
end
|
data/lib/github_api_v3.rb
CHANGED
data/lib/github_api_v3/client.rb
CHANGED
@@ -1,87 +1,22 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'github_api_v3/client/users'
|
3
|
+
require 'github_api_v3/client/repos'
|
4
|
+
|
1
5
|
module GitHub
|
2
6
|
class Client
|
3
7
|
|
4
8
|
include HTTParty
|
5
|
-
base_uri
|
9
|
+
base_uri Default::API_ENDPOINT
|
10
|
+
|
11
|
+
include GitHub::Client::Users
|
12
|
+
include GitHub::Client::Repos
|
6
13
|
|
7
14
|
attr_reader :login, :access_token
|
8
15
|
|
9
16
|
def initialize(options={})
|
10
17
|
@login = options[:login]
|
11
|
-
@access_token = options[:access_token]
|
12
|
-
|
13
|
-
|
14
|
-
# Users
|
15
|
-
|
16
|
-
def user(username=nil)
|
17
|
-
if username
|
18
|
-
get "/users/#{username}"
|
19
|
-
else
|
20
|
-
get '/user', auth_params
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def users
|
25
|
-
get '/users'
|
26
|
-
end
|
27
|
-
|
28
|
-
# Get emails for authenticated user
|
29
|
-
def emails
|
30
|
-
get '/user/emails', auth_params
|
31
|
-
end
|
32
|
-
|
33
|
-
def follow(username)
|
34
|
-
put "/user/following/#{username}", auth_params
|
35
|
-
end
|
36
|
-
|
37
|
-
def follows?(username, target_username)
|
38
|
-
response = self.class.get "/users/#{username}/following/#{target_username}"
|
39
|
-
response.code == 204
|
40
|
-
end
|
41
|
-
|
42
|
-
def followers(username=nil)
|
43
|
-
if username
|
44
|
-
get "/users/#{username}/followers"
|
45
|
-
else
|
46
|
-
get '/user/followers', auth_params
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def following(username)
|
51
|
-
get "/users/#{username}/following"
|
52
|
-
end
|
53
|
-
|
54
|
-
def following?(username)
|
55
|
-
response = self.class.get "/user/following/#{username}", query: auth_params
|
56
|
-
response.code == 204
|
57
|
-
end
|
58
|
-
|
59
|
-
def unfollow(username)
|
60
|
-
delete "/user/following/#{username}", auth_params
|
61
|
-
end
|
62
|
-
|
63
|
-
def keys(username=nil)
|
64
|
-
if username
|
65
|
-
get "/users/#{username}/keys"
|
66
|
-
else
|
67
|
-
get '/user/keys', auth_params
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def key(id)
|
72
|
-
get "/user/keys/#{id}", auth_params
|
73
|
-
end
|
74
|
-
|
75
|
-
def delete_key(id)
|
76
|
-
delete "/user/keys/#{id}", auth_params
|
77
|
-
end
|
78
|
-
|
79
|
-
def events(username)
|
80
|
-
get "/users/#{username}/events"
|
81
|
-
end
|
82
|
-
|
83
|
-
def repos(username)
|
84
|
-
get "/users/#{username}/repos"
|
18
|
+
@access_token = options[:access_token] if options[:access_token]
|
19
|
+
@password = options[:password] if options[:password]
|
85
20
|
end
|
86
21
|
|
87
22
|
private
|
@@ -92,21 +27,26 @@ module GitHub
|
|
92
27
|
response.parsed_response
|
93
28
|
end
|
94
29
|
|
95
|
-
def put(url, params={})
|
30
|
+
def put(url, params={}, boolean=false)
|
96
31
|
response = self.class.put url, query: params
|
97
32
|
handle_response(response)
|
98
|
-
response.parsed_response
|
33
|
+
boolean ? response.code == 204 : response.parsed_response
|
99
34
|
end
|
100
35
|
|
101
|
-
def post(url, params={})
|
102
|
-
response = self.class.post url, query: params
|
103
|
-
response
|
36
|
+
def post(url, params={}, body={}, boolean=false)
|
37
|
+
response = self.class.post url, query: params, body: body.to_json
|
38
|
+
handle_response(response)
|
39
|
+
boolean ? response.code == 204 : response.parsed_response
|
104
40
|
end
|
105
41
|
|
106
|
-
def delete(url, params={})
|
42
|
+
def delete(url, params={}, boolean=false)
|
107
43
|
response = self.class.delete url, query: params
|
108
44
|
handle_response(response)
|
109
|
-
response.parsed_response
|
45
|
+
boolean ? response.code == 204 : response.parsed_response
|
46
|
+
end
|
47
|
+
|
48
|
+
def basic_params
|
49
|
+
@password.nil? ? {} : { login: @login, password: @password }
|
110
50
|
end
|
111
51
|
|
112
52
|
def auth_params
|
@@ -0,0 +1,160 @@
|
|
1
|
+
module GitHub
|
2
|
+
class Client
|
3
|
+
|
4
|
+
module Repos
|
5
|
+
|
6
|
+
# List all repositories
|
7
|
+
#
|
8
|
+
# Get a list of all repositories.
|
9
|
+
#
|
10
|
+
# @return [Array]
|
11
|
+
# @see http://developer.github.com/v3/repos/#list-all-public-repositories
|
12
|
+
def all_repos
|
13
|
+
get '/repositories'
|
14
|
+
end
|
15
|
+
|
16
|
+
# Get one repository.
|
17
|
+
#
|
18
|
+
# @param owner [String] Username of repository owner.
|
19
|
+
# @param repo [String] Name of repository.
|
20
|
+
# @return [Hash] Repository information.
|
21
|
+
# @see http://developer.github.com/v3/repos/#get
|
22
|
+
# @example
|
23
|
+
# GitHub.repo('caseyscarborough','github')
|
24
|
+
def repo(owner, repo)
|
25
|
+
get "/repos/#{owner}/#{repo}"
|
26
|
+
end
|
27
|
+
|
28
|
+
# Get all repositories for a user.
|
29
|
+
#
|
30
|
+
# If authenticated, returns all repos for authenticated user.
|
31
|
+
#
|
32
|
+
# @param username [String] Username for repos owner.
|
33
|
+
# @return [Array] List of repositories.
|
34
|
+
# @see http://developer.github.com/v3/repos/#list-user-repositories
|
35
|
+
# @example
|
36
|
+
# GitHub.repos('caseyscarborough')
|
37
|
+
# @example
|
38
|
+
# client.repos
|
39
|
+
def repos(username=nil)
|
40
|
+
if username
|
41
|
+
get "/users/#{username}/repos"
|
42
|
+
else
|
43
|
+
get '/user/repos', auth_params
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Create a repository.
|
48
|
+
#
|
49
|
+
# Requires authentication.
|
50
|
+
#
|
51
|
+
# @param name [String] Repository name.
|
52
|
+
# @param options [Hash] Repository information.
|
53
|
+
# @option options [String] :description Repository description.
|
54
|
+
# @option options [String] :homepage Repository homepage.
|
55
|
+
# @option options [Boolean] :private
|
56
|
+
# @option options [Boolean] :has_issues
|
57
|
+
# @option options [Boolean] :has_wiki
|
58
|
+
# @option options [Boolean] :has_downloads
|
59
|
+
# @option options [Integer] :team_id ID of team
|
60
|
+
# @option options [Boolean] :auto_init Create README.md automatically.
|
61
|
+
# @option options [String] :gitignore_template Desired .gitignore template to apply.
|
62
|
+
# @return [Hash] Repository information.
|
63
|
+
# @see http://developer.github.com/v3/repos/#create
|
64
|
+
# @example
|
65
|
+
# client.create_repo('new-repo', description: 'New repository.', private: true)
|
66
|
+
def create_repo(name, options={})
|
67
|
+
post "/user/repos", auth_params, options.merge(name: name)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Delete a repository.
|
71
|
+
#
|
72
|
+
# Requires authentication.
|
73
|
+
#
|
74
|
+
# @param repo [String] Name of repository to delete.
|
75
|
+
# @return [Boolean] True if successful, false if not.
|
76
|
+
# @see http://developer.github.com/v3/repos/#delete-a-repository
|
77
|
+
# @example
|
78
|
+
# client.delete_repo('repo-name')
|
79
|
+
def delete_repo(repo)
|
80
|
+
delete "/repos/#{login}/#{repo}", auth_params, true
|
81
|
+
end
|
82
|
+
|
83
|
+
# Get organization repositories.
|
84
|
+
#
|
85
|
+
# @param org [String] Organization name.
|
86
|
+
# @return [Array] List of all repositories for org.
|
87
|
+
# @see http://developer.github.com/v3/repos/#list-organization-repositories
|
88
|
+
# @example
|
89
|
+
# GitHub.org_repos('rails')
|
90
|
+
def org_repos(org)
|
91
|
+
get "/orgs/#{org}/repos"
|
92
|
+
end
|
93
|
+
|
94
|
+
# List contributors for a repository.
|
95
|
+
#
|
96
|
+
# @param owner [String] Owner of repository.
|
97
|
+
# @param repo [String] Repository name.
|
98
|
+
# @return [Array] List of contributors.
|
99
|
+
# @see http://developer.github.com/v3/repos/#list-contributors
|
100
|
+
# @example
|
101
|
+
# GitHub.contributors('caseyscarborough','github')
|
102
|
+
def contributors(owner, repo)
|
103
|
+
get "/repos/#{owner}/#{repo}/contributors"
|
104
|
+
end
|
105
|
+
|
106
|
+
# List languages for a repository.
|
107
|
+
#
|
108
|
+
# @param owner [String] Owner of repository.
|
109
|
+
# @param repo [String] Repository name.
|
110
|
+
# @return [Hash] Language information.
|
111
|
+
# @see http://developer.github.com/v3/repos/#list-languages
|
112
|
+
# @example
|
113
|
+
# GitHub.languages('caseyscarborough','github')
|
114
|
+
def languages(owner, repo)
|
115
|
+
get "/repos/#{owner}/#{repo}/languages"
|
116
|
+
end
|
117
|
+
|
118
|
+
# def teams(owner, repo)
|
119
|
+
# get "/repos/#{owner}/#{repo}/teams"
|
120
|
+
# end
|
121
|
+
|
122
|
+
# List tags for a repository.
|
123
|
+
#
|
124
|
+
# @param owner [String] Owner of repository.
|
125
|
+
# @param repo [String] Repository name.
|
126
|
+
# @return [Array] List of tags and their information.
|
127
|
+
# @see http://developer.github.com/v3/repos/#list-tags
|
128
|
+
# @example
|
129
|
+
# GitHub.tags('caseyscarborough','github')
|
130
|
+
def tags(owner, repo)
|
131
|
+
get "/repos/#{owner}/#{repo}/tags"
|
132
|
+
end
|
133
|
+
|
134
|
+
# List branches for a repository.
|
135
|
+
#
|
136
|
+
# @param owner [String] Owner of repository.
|
137
|
+
# @param repo [String] Repository name.
|
138
|
+
# @return [Array] List of brances and their information.
|
139
|
+
# @see http://developer.github.com/v3/repos/#list-branches
|
140
|
+
# @example
|
141
|
+
# GitHub.branches('caseyscarborough','github')
|
142
|
+
def branches(owner, repo)
|
143
|
+
get "/repos/#{owner}/#{repo}/branches"
|
144
|
+
end
|
145
|
+
|
146
|
+
# Get information about a branch.
|
147
|
+
#
|
148
|
+
# @param owner [String] Owner of repository.
|
149
|
+
# @param repo [String] Repository name.
|
150
|
+
# @param branch [String] Branch name.
|
151
|
+
# @see http://developer.github.com/v3/repos/#get-branch
|
152
|
+
# @example
|
153
|
+
# GitHub.branch('caseyscarborough','github','master')
|
154
|
+
def branch(owner, repo, branch)
|
155
|
+
get "/repos/#{owner}/#{repo}/branches/#{branch}"
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,178 @@
|
|
1
|
+
module GitHub
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Contains methods for the Users API.
|
5
|
+
#
|
6
|
+
# @see http://developer.github.com/v3/users/
|
7
|
+
module Users
|
8
|
+
|
9
|
+
# Returns a single user.
|
10
|
+
#
|
11
|
+
# If called without the username parameter, it will return the
|
12
|
+
# currently authenticated user.
|
13
|
+
#
|
14
|
+
# @param username [String] A GitHub username.
|
15
|
+
# @return [Hash]
|
16
|
+
# @see http://developer.github.com/v3/users/#get-a-single-user
|
17
|
+
# @see http://developer.github.com/v3/users/#get-the-authenticated-user
|
18
|
+
# @example
|
19
|
+
# GitHub.user('caseyscarborough')
|
20
|
+
def user(username=nil)
|
21
|
+
if username
|
22
|
+
get "/users/#{username}"
|
23
|
+
else
|
24
|
+
get '/user', auth_params
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Returns a list of all GitHub users.
|
29
|
+
#
|
30
|
+
# @return [Array]
|
31
|
+
# @see http://developer.github.com/v3/users/#get-all-users
|
32
|
+
def users
|
33
|
+
get '/users'
|
34
|
+
end
|
35
|
+
|
36
|
+
# Get all emails for an authenticated user.
|
37
|
+
#
|
38
|
+
# @return [Array]
|
39
|
+
# @see http://developer.github.com/v3/users/emails/#list-email-addresses-for-a-user
|
40
|
+
# @example
|
41
|
+
# client = GitHub::Client.new(login: 'username', access_token: 'abcdefghijklmnopqrstuvwxyz12345')
|
42
|
+
# client.emails # => ["email@example.com", "email2@example.com"]
|
43
|
+
def emails
|
44
|
+
get '/user/emails', auth_params
|
45
|
+
end
|
46
|
+
|
47
|
+
# Follow a user.
|
48
|
+
#
|
49
|
+
# Requires authentication.
|
50
|
+
#
|
51
|
+
# @param username [String] Username of the user to follow.
|
52
|
+
# @return [Boolean] True on success.
|
53
|
+
# @see http://developer.github.com/v3/users/followers/#follow-a-user
|
54
|
+
# @example
|
55
|
+
# client.follow('caseyscarborough')
|
56
|
+
def follow(username)
|
57
|
+
put "/user/following/#{username}", auth_params, true
|
58
|
+
end
|
59
|
+
|
60
|
+
# Checks to see if a user is following another user.
|
61
|
+
#
|
62
|
+
# @param username [String] The user following.
|
63
|
+
# @param target_username [String] The target user.
|
64
|
+
# @return [Boolean] True if user does follow target user.
|
65
|
+
# @see http://developer.github.com/v3/users/followers/#check-if-one-user-follows-another
|
66
|
+
# @example
|
67
|
+
# GitHub.follows?('caseyscarborough', 'matz')
|
68
|
+
def follows?(username, target_username)
|
69
|
+
response = self.class.get "/users/#{username}/following/#{target_username}"
|
70
|
+
response.code == 204
|
71
|
+
end
|
72
|
+
|
73
|
+
# List a user's followers.
|
74
|
+
#
|
75
|
+
# If username is left blank, returns the currently authenticated user's
|
76
|
+
# list of followers.
|
77
|
+
#
|
78
|
+
# @param username [String] The username to get a list of followers for.
|
79
|
+
# @return [Array] Array of hashes of each user.
|
80
|
+
# @see http://developer.github.com/v3/users/followers/#list-followers-of-a-user
|
81
|
+
# @example
|
82
|
+
# GitHub.followers('caseyscarborough')
|
83
|
+
# @example
|
84
|
+
# # Get authenticated user's followers
|
85
|
+
# client.followers
|
86
|
+
def followers(username=nil)
|
87
|
+
if username
|
88
|
+
get "/users/#{username}/followers"
|
89
|
+
else
|
90
|
+
get '/user/followers', auth_params
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# List users who a specific user is following.
|
95
|
+
#
|
96
|
+
# @param username [String] The username of the user to get the list of users they arefollowing.
|
97
|
+
# @return [Array] Array of hashes of each user.
|
98
|
+
# @see http://developer.github.com/v3/users/followers/#list-users-followed-by-another-user
|
99
|
+
# @example
|
100
|
+
# GitHub.following('caseyscarborough')
|
101
|
+
def following(username)
|
102
|
+
get "/users/#{username}/following"
|
103
|
+
end
|
104
|
+
|
105
|
+
# Check if an authenticated user is following another user.
|
106
|
+
#
|
107
|
+
# Requires the user to be authenticated.
|
108
|
+
#
|
109
|
+
# @param username [String] The username of the user to check against.
|
110
|
+
# @return [Boolean] True if user does follow the target user, false if not.
|
111
|
+
# @example
|
112
|
+
# client.following?('caseyscarborough')
|
113
|
+
def following?(username)
|
114
|
+
response = self.class.get "/user/following/#{username}", query: auth_params
|
115
|
+
response.code == 204
|
116
|
+
end
|
117
|
+
|
118
|
+
# Unfollow a user.
|
119
|
+
#
|
120
|
+
# Requires authentication.
|
121
|
+
#
|
122
|
+
# @param username [String] The username of the user to unfollow.
|
123
|
+
# @return [Boolean] True if successful, false otherwise.
|
124
|
+
# @example
|
125
|
+
# client.unfollow('matz')
|
126
|
+
def unfollow(username)
|
127
|
+
delete "/user/following/#{username}", auth_params, true
|
128
|
+
end
|
129
|
+
|
130
|
+
# Get a list of public keys for a user.
|
131
|
+
#
|
132
|
+
# If username left blank, get currently authenticated user's keys.
|
133
|
+
#
|
134
|
+
# @param username [String] The username to get public keys for.
|
135
|
+
# @return [Array] Array of hashes of public keys.
|
136
|
+
# @example
|
137
|
+
# GitHub.keys('username')
|
138
|
+
# @example
|
139
|
+
# client.keys
|
140
|
+
def keys(username=nil)
|
141
|
+
if username
|
142
|
+
get "/users/#{username}/keys"
|
143
|
+
else
|
144
|
+
get '/user/keys', auth_params
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# Get a public key.
|
149
|
+
#
|
150
|
+
# Requires authentication.
|
151
|
+
#
|
152
|
+
# @param id [Integer] The id of the key to retrieve.
|
153
|
+
# @return [Hash]
|
154
|
+
# @example
|
155
|
+
# client.key(123)
|
156
|
+
def key(id)
|
157
|
+
get "/user/keys/#{id}", auth_params
|
158
|
+
end
|
159
|
+
|
160
|
+
# Remove a public key from a user's account.
|
161
|
+
#
|
162
|
+
# Requires authentication.
|
163
|
+
#
|
164
|
+
# @param id [Integer] The id of the integer to delete.
|
165
|
+
# @return [Boolean] True if success, false if not.
|
166
|
+
# @example
|
167
|
+
# client.delete_key(123)
|
168
|
+
def delete_key(id)
|
169
|
+
delete "/user/keys/#{id}", auth_params, true
|
170
|
+
end
|
171
|
+
|
172
|
+
def events(username)
|
173
|
+
get "/users/#{username}/events"
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
178
|
+
end
|