github_api 0.12.4 → 0.13.0
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/README.md +9 -8
- data/lib/github_api/api/arguments.rb +2 -2
- data/lib/github_api/client/authorizations.rb +28 -31
- data/lib/github_api/client/authorizations/app.rb +1 -3
- data/lib/github_api/client/orgs.rb +42 -23
- data/lib/github_api/client/orgs/members.rb +37 -21
- data/lib/github_api/client/orgs/memberships.rb +129 -0
- data/lib/github_api/client/orgs/teams.rb +157 -43
- data/lib/github_api/client/repos/commits.rb +2 -2
- data/lib/github_api/client/repos/keys.rb +35 -14
- data/lib/github_api/client/repos/releases.rb +57 -23
- data/lib/github_api/client/repos/releases/tags.rb +22 -0
- data/lib/github_api/configuration.rb +1 -1
- data/lib/github_api/validations/required.rb +5 -10
- data/lib/github_api/version.rb +1 -8
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a71c5d538e4a0188b7991e64d288552324618f74
|
4
|
+
data.tar.gz: 912f75917c8be1cbce0eec32496a6f15eca9c6c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddda23aac44bc2a628e0d100458f583615324c4fc7cab05da43ec886a9e087581a09faedbbcfef7c2db75fe2d8c4ea1dde3c1eadd2c5f2971bf2406d4829bf1e
|
7
|
+
data.tar.gz: e5f063e110e1f3b94b2e9d7fba6dae3cf6209c692b315cd2e33d992520d1d2dff70d35fbc4a388eab652d246ce17735b024366e4d873961bb3cd0ba99d028fb6
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
<div align="center">
|
2
|
+
<a href="http://peter-murach.github.io/github/"><img width="136" src="https://github.com/peter-murach/github/raw/master/icons/github_api.png" alt="github api logo" /></a>
|
3
|
+
</div>
|
4
|
+
# GithubAPI
|
4
5
|
[][gem]
|
5
6
|
[][travis]
|
6
7
|
[][codeclimate]
|
@@ -138,7 +139,7 @@ Github::Client::Repos::Contents.actions
|
|
138
139
|
The code base is modular. This means that you can work specifically with a given part of GitHub API. If you want to only work with activity starring API do the following:
|
139
140
|
|
140
141
|
```ruby
|
141
|
-
starring = Github::Client::Activity::Starring.new
|
142
|
+
starring = Github::Client::Activity::Starring.new oauth_token: token
|
142
143
|
starring.star 'peter-murach', 'github'
|
143
144
|
```
|
144
145
|
|
@@ -404,13 +405,13 @@ Though this method is convenient you should strongly consider using `OAuth` for
|
|
404
405
|
|
405
406
|
### 3.2 Authorizations API
|
406
407
|
|
407
|
-
#### 3.2.1 For
|
408
|
+
#### 3.2.1 For a User
|
408
409
|
|
409
|
-
To create an access token through the GitHub
|
410
|
+
To create an access token through the GitHub Authorizations API, you are required to pass your basic credentials and scopes you wish to have for the authentication token.
|
410
411
|
|
411
412
|
```ruby
|
412
413
|
github = Github.new basic_auth: 'login:password'
|
413
|
-
github.oauth.create scopes: ['repo']
|
414
|
+
github.oauth.create scopes: ['repo'], note: 'admin script'
|
414
415
|
```
|
415
416
|
|
416
417
|
You can add more than one scope from the `user`, `public_repo`, `repo`, `gist` or leave the scopes parameter out, in which case, the default read-only access will be assumed (includes public user profile info, public repo info, and gists).
|
@@ -648,7 +649,7 @@ Then update the file just like you do with creating:
|
|
648
649
|
contents.update 'username', 'repo_name', 'full_path_to/file.ext',
|
649
650
|
path: 'full_path_to/file.ext'
|
650
651
|
message: 'Your commit message',
|
651
|
-
content: 'The
|
652
|
+
content: 'The contents to be updated',
|
652
653
|
sha: file.sha
|
653
654
|
```
|
654
655
|
|
@@ -118,8 +118,8 @@ module Github
|
|
118
118
|
# Check if required keys are present inside parameters hash.
|
119
119
|
#
|
120
120
|
# @api public
|
121
|
-
def assert_required(required)
|
122
|
-
assert_required_keys
|
121
|
+
def assert_required(*required)
|
122
|
+
assert_required_keys(required, params)
|
123
123
|
self
|
124
124
|
end
|
125
125
|
|
@@ -6,16 +6,6 @@ module Github
|
|
6
6
|
|
7
7
|
require_all 'github_api/client/authorizations', 'app'
|
8
8
|
|
9
|
-
VALID_AUTH_PARAM_NAMES = %w[
|
10
|
-
scopes
|
11
|
-
add_scopes
|
12
|
-
remove_scopes
|
13
|
-
note
|
14
|
-
note_url
|
15
|
-
client_id
|
16
|
-
client_secret
|
17
|
-
].freeze
|
18
|
-
|
19
9
|
# Access to Authorizations::App API
|
20
10
|
namespace :app
|
21
11
|
|
@@ -24,9 +14,9 @@ module Github
|
|
24
14
|
# @see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations
|
25
15
|
#
|
26
16
|
# @example
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
17
|
+
# github = Github.new basic_auth: 'login:password'
|
18
|
+
# github.oauth.list
|
19
|
+
# github.oauth.list { |auth| ... }
|
30
20
|
#
|
31
21
|
# @api public
|
32
22
|
def list(*args)
|
@@ -37,7 +27,7 @@ module Github
|
|
37
27
|
return response unless block_given?
|
38
28
|
response.each { |el| yield el }
|
39
29
|
end
|
40
|
-
|
30
|
+
alias_method :all, :list
|
41
31
|
|
42
32
|
# Get a single authorization
|
43
33
|
#
|
@@ -56,32 +46,36 @@ module Github
|
|
56
46
|
|
57
47
|
get_request("/authorizations/#{arguments.id}", arguments.params)
|
58
48
|
end
|
59
|
-
|
49
|
+
alias_method :find, :get
|
60
50
|
|
61
51
|
# Create a new authorization
|
62
52
|
#
|
53
|
+
# @see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization
|
54
|
+
#
|
63
55
|
# @param [Hash] params
|
64
56
|
# @option params [Array[String]] :scopes
|
65
57
|
# A list of scopes that this authorization is in.
|
66
58
|
# @option params [String] :note
|
67
|
-
# A note to remind you what the OAuth token is for.
|
59
|
+
# Required. A note to remind you what the OAuth token is for.
|
68
60
|
# @option params [String] :note_url
|
69
61
|
# A URL to remind you what the OAuth token is for.
|
70
62
|
# @option params [String] :client_id
|
71
63
|
# The 20 character OAuth app client key for which to create the token.
|
72
64
|
# @option params [String] :client_secret
|
73
65
|
# The 40 character OAuth app client secret for which to create the token.
|
66
|
+
# @option params [String] :fingerprint
|
67
|
+
# A unique string to distinguish an authorization from others
|
68
|
+
# created for the same client ID and user.
|
74
69
|
#
|
75
70
|
# @example
|
76
|
-
#
|
77
|
-
#
|
78
|
-
# "scopes" => ["public_repo"]
|
71
|
+
# github = Github.new basic_auth: 'login:password'
|
72
|
+
# github.oauth.create scopes: ["public_repo"], note: 'amdmin script'
|
79
73
|
#
|
80
74
|
# @api public
|
81
75
|
def create(*args)
|
82
76
|
raise_authentication_error unless authenticated?
|
83
77
|
arguments(args) do
|
84
|
-
|
78
|
+
assert_required :note, :scopes
|
85
79
|
end
|
86
80
|
|
87
81
|
post_request('/authorizations', arguments.params)
|
@@ -89,6 +83,8 @@ module Github
|
|
89
83
|
|
90
84
|
# Update an existing authorization
|
91
85
|
#
|
86
|
+
# @see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
|
87
|
+
#
|
92
88
|
# @param [Hash] inputs
|
93
89
|
# @option inputs [Array] :scopes
|
94
90
|
# Optional array - A list of scopes that this authorization is in.
|
@@ -100,28 +96,30 @@ module Github
|
|
100
96
|
# Optional string - A note to remind you what the OAuth token is for.
|
101
97
|
# @optoin inputs [String] :note_url
|
102
98
|
# Optional string - A URL to remind you what the OAuth token is for.
|
99
|
+
# @option params [String] :fingerprint
|
100
|
+
# A unique string to distinguish an authorization from others
|
101
|
+
# created for the same client ID and user.
|
103
102
|
#
|
104
103
|
# @example
|
105
|
-
#
|
106
|
-
#
|
104
|
+
# github = Github.new basic_auth: 'login:password'
|
105
|
+
# github.oauth.update "authorization-id", add_scopes: ["repo"]
|
107
106
|
#
|
108
107
|
# @api public
|
109
108
|
def update(*args)
|
110
109
|
raise_authentication_error unless authenticated?
|
111
|
-
arguments(args, required: [:id])
|
112
|
-
permit VALID_AUTH_PARAM_NAMES
|
113
|
-
end
|
110
|
+
arguments(args, required: [:id])
|
114
111
|
|
115
112
|
patch_request("/authorizations/#{arguments.id}", arguments.params)
|
116
113
|
end
|
117
|
-
|
114
|
+
alias_method :edit, :update
|
118
115
|
|
119
116
|
# Delete an authorization
|
120
117
|
#
|
121
118
|
# @see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization
|
122
119
|
#
|
123
120
|
# @example
|
124
|
-
#
|
121
|
+
# github = Github.new
|
122
|
+
# github.oauth.delete 'authorization-id'
|
125
123
|
#
|
126
124
|
# @api public
|
127
125
|
def delete(*args)
|
@@ -130,14 +128,13 @@ module Github
|
|
130
128
|
|
131
129
|
delete_request("/authorizations/#{arguments.id}", arguments.params)
|
132
130
|
end
|
133
|
-
|
131
|
+
alias_method :remove, :delete
|
134
132
|
|
135
133
|
protected
|
136
134
|
|
137
135
|
def raise_authentication_error
|
138
|
-
raise ArgumentError, 'You can only access your own tokens'
|
139
|
-
|
136
|
+
raise ArgumentError, 'You can only access your own tokens' \
|
137
|
+
' via Basic Authentication'
|
140
138
|
end
|
141
|
-
|
142
139
|
end # Client::Authorizations
|
143
140
|
end # Github
|
@@ -24,9 +24,7 @@ module Github
|
|
24
24
|
# @api public
|
25
25
|
def create(*args)
|
26
26
|
raise_authentication_error unless authenticated?
|
27
|
-
arguments(args, required: [:client_id])
|
28
|
-
permit VALID_AUTH_PARAM_NAMES
|
29
|
-
end
|
27
|
+
arguments(args, required: [:client_id])
|
30
28
|
|
31
29
|
if arguments.client_id
|
32
30
|
put_request("/authorizations/clients/#{arguments.client_id}", arguments.params)
|
@@ -1,28 +1,41 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Github
|
4
|
+
# Organizations API
|
4
5
|
class Client::Orgs < API
|
5
6
|
|
6
7
|
require_all 'github_api/client/orgs',
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
VALID_ORG_PARAM_NAMES = %w[
|
11
|
-
billing_email
|
12
|
-
company
|
13
|
-
email
|
14
|
-
location
|
15
|
-
name
|
16
|
-
].freeze
|
8
|
+
'members',
|
9
|
+
'memberships',
|
10
|
+
'teams'
|
17
11
|
|
18
12
|
# Access to Client::Orgs::Members API
|
19
13
|
namespace :members
|
20
14
|
|
15
|
+
# Access to Client::Orgs::Memberships API
|
16
|
+
namespace :memberships
|
17
|
+
|
21
18
|
# Access to Client::Orgs::Teams API
|
22
19
|
namespace :teams
|
23
20
|
|
21
|
+
# List all organizations
|
22
|
+
#
|
23
|
+
# Lists all organizations, in the order that they were created on GitHub.
|
24
|
+
#
|
25
|
+
# @see https://developer.github.com/v3/orgs/#list-all-organizations
|
26
|
+
#
|
27
|
+
# @param [Hash] params
|
28
|
+
# @option params [String] :since
|
29
|
+
# The integer ID of the last Organization that you've seen.
|
30
|
+
#
|
31
|
+
# @example
|
32
|
+
# github = Github.new
|
33
|
+
# github.orgs.list :every
|
34
|
+
#
|
24
35
|
# List all public organizations for a user.
|
25
36
|
#
|
37
|
+
# @see https://developer.github.com/v3/orgs/#list-user-organizations
|
38
|
+
#
|
26
39
|
# @example
|
27
40
|
# github = Github.new
|
28
41
|
# github.orgs.list user: 'user-name'
|
@@ -37,19 +50,23 @@ module Github
|
|
37
50
|
def list(*args)
|
38
51
|
params = arguments(args).params
|
39
52
|
|
40
|
-
|
41
|
-
get_request("/users/#{user_name}/orgs", params)
|
53
|
+
if (user_name = params.delete('user'))
|
54
|
+
response = get_request("/users/#{user_name}/orgs", params)
|
55
|
+
elsif args.map(&:to_s).include?('every')
|
56
|
+
response = get_request('/organizations', params)
|
42
57
|
else
|
43
58
|
# For the authenticated user
|
44
|
-
get_request(
|
59
|
+
response = get_request('/user/orgs', params)
|
45
60
|
end
|
46
61
|
return response unless block_given?
|
47
62
|
response.each { |el| yield el }
|
48
63
|
end
|
49
|
-
|
64
|
+
alias_method :all, :list
|
50
65
|
|
51
66
|
# Get properties for a single organization
|
52
67
|
#
|
68
|
+
# @see https://developer.github.com/v3/orgs/#get-an-organization
|
69
|
+
#
|
53
70
|
# @example
|
54
71
|
# github = Github.new
|
55
72
|
# github.orgs.get 'github'
|
@@ -60,21 +77,25 @@ module Github
|
|
60
77
|
|
61
78
|
get_request("/orgs/#{arguments.org_name}", arguments.params)
|
62
79
|
end
|
63
|
-
|
80
|
+
alias_method :find, :get
|
64
81
|
|
65
82
|
# Edit organization
|
66
83
|
#
|
84
|
+
# @see https://developer.github.com/v3/orgs/#edit-an-organization
|
85
|
+
#
|
67
86
|
# @param [Hash] params
|
68
|
-
# @
|
87
|
+
# @option params [String] :billing_email
|
69
88
|
# Billing email address. This address is not publicized.
|
70
|
-
# @
|
89
|
+
# @option params [String] :company
|
71
90
|
# The company name
|
72
|
-
# @
|
91
|
+
# @option params [String] :email
|
73
92
|
# The publicly visible email address
|
74
|
-
# @
|
93
|
+
# @option params [String] :location
|
75
94
|
# The location
|
76
|
-
# @
|
95
|
+
# @option params [String] :name
|
77
96
|
# The shorthand name of the company.
|
97
|
+
# @option params [String] :description
|
98
|
+
# The description of the company.
|
78
99
|
#
|
79
100
|
# @example
|
80
101
|
# github = Github.new oauth_token: '...'
|
@@ -88,9 +109,7 @@ module Github
|
|
88
109
|
#
|
89
110
|
# @api public
|
90
111
|
def edit(*args)
|
91
|
-
arguments(args, required: [:org_name])
|
92
|
-
permit VALID_ORG_PARAM_NAMES
|
93
|
-
end
|
112
|
+
arguments(args, required: [:org_name])
|
94
113
|
|
95
114
|
patch_request("/orgs/#{arguments.org_name}", arguments.params)
|
96
115
|
end
|
@@ -10,21 +10,30 @@ module Github
|
|
10
10
|
# both concealed and public members will be returned.
|
11
11
|
# Otherwise only public members are returned.
|
12
12
|
#
|
13
|
+
# @see https://developer.github.com/v3/orgs/members/#members-list
|
14
|
+
#
|
13
15
|
# @param [Hash] params
|
14
|
-
# @
|
16
|
+
# @option params [String] :filter
|
15
17
|
# Filter members returned in the list. Can be one of:
|
16
18
|
# * 2fa_disabled: Members without two-factor authentication enabled.
|
17
19
|
# Available for owners of organizations with private repositories.
|
18
20
|
# * all: All members the authenticated user can see.
|
19
21
|
# Default: all
|
22
|
+
# @option params [String] :role
|
23
|
+
# Filter members returned by their role. Can be one of:
|
24
|
+
# * all: All members of the organization, regardless of role.
|
25
|
+
# * admin: Organization owners.
|
26
|
+
# * member: Non-owner organization members.
|
20
27
|
#
|
21
28
|
# @example
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
29
|
+
# github = Github.new
|
30
|
+
# github.orgs.members.list 'org-name'
|
31
|
+
# github.orgs.members.list 'org-name' { |memb| ... }
|
25
32
|
#
|
26
33
|
# List public members
|
27
34
|
#
|
35
|
+
# @see https://developer.github.com/v3/orgs/members/#public-members-list
|
36
|
+
#
|
28
37
|
# Members of an organization can choose to have their
|
29
38
|
# membership publicized or not.
|
30
39
|
#
|
@@ -39,14 +48,14 @@ module Github
|
|
39
48
|
org_name = arguments.org_name
|
40
49
|
|
41
50
|
response = if params.delete('public')
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
51
|
+
get_request("/orgs/#{org_name}/public_members", params)
|
52
|
+
else
|
53
|
+
get_request("/orgs/#{org_name}/members", params)
|
54
|
+
end
|
46
55
|
return response unless block_given?
|
47
56
|
response.each { |el| yield el }
|
48
57
|
end
|
49
|
-
|
58
|
+
alias_method :all, :list
|
50
59
|
|
51
60
|
# Check if user is, publicly or privately, a member of an organization
|
52
61
|
#
|
@@ -67,20 +76,22 @@ module Github
|
|
67
76
|
user = arguments.user
|
68
77
|
|
69
78
|
response = if params.delete('public')
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
79
|
+
get_request("/orgs/#{org_name}/public_members/#{user}", params)
|
80
|
+
else
|
81
|
+
get_request("/orgs/#{org_name}/members/#{user}", params)
|
82
|
+
end
|
74
83
|
response.status == 204
|
75
84
|
rescue Github::Error::NotFound
|
76
85
|
false
|
77
|
-
end
|
78
86
|
|
87
|
+
end
|
79
88
|
# Remove a member
|
80
89
|
#
|
81
90
|
# Removing a user from this list will remove them from all teams and
|
82
91
|
# they will no longer have any access to the organization’s repositories.
|
83
92
|
#
|
93
|
+
# @see https://developer.github.com/v3/orgs/members/#remove-a-member
|
94
|
+
#
|
84
95
|
# @example
|
85
96
|
# github = Github.new
|
86
97
|
# github.orgs.members.remove 'org-name', 'member-name'
|
@@ -89,11 +100,14 @@ module Github
|
|
89
100
|
def delete(*args)
|
90
101
|
arguments(args, required: [:org_name, :user])
|
91
102
|
|
92
|
-
delete_request("/orgs/#{arguments.org_name}/members/#{arguments.user}",
|
103
|
+
delete_request("/orgs/#{arguments.org_name}/members/#{arguments.user}",
|
104
|
+
arguments.params)
|
93
105
|
end
|
94
|
-
|
106
|
+
alias_method :remove, :delete
|
95
107
|
|
96
|
-
# Publicize a user
|
108
|
+
# Publicize a user's membership
|
109
|
+
#
|
110
|
+
# @see https://developer.github.com/v3/orgs/members/#publicize-a-users-membership
|
97
111
|
#
|
98
112
|
# @example
|
99
113
|
# github = Github.new oauth_token: '...'
|
@@ -108,11 +122,13 @@ module Github
|
|
108
122
|
alias :make_public :publicize
|
109
123
|
alias :publicize_membership :publicize
|
110
124
|
|
111
|
-
# Conceal a user
|
125
|
+
# Conceal a user's membership
|
126
|
+
#
|
127
|
+
# @see https://developer.github.com/v3/orgs/members/#conceal-a-users-membership
|
112
128
|
#
|
113
129
|
# @example
|
114
|
-
#
|
115
|
-
#
|
130
|
+
# github = Github.new oauth_token: '...'
|
131
|
+
# github.orgs.members.conceal 'org-name', 'member-name'
|
116
132
|
#
|
117
133
|
# @api public
|
118
134
|
def conceal(*args)
|
@@ -120,6 +136,6 @@ module Github
|
|
120
136
|
|
121
137
|
delete_request("/orgs/#{arguments.org_name}/public_members/#{arguments.user}", arguments.params)
|
122
138
|
end
|
123
|
-
|
139
|
+
alias_method :conceal_membership, :conceal
|
124
140
|
end # Client::Orgs::Members
|
125
141
|
end # Github
|