octokit 4.22.0 → 9.2.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 +117 -95
- data/Rakefile +20 -14
- data/lib/ext/sawyer/relation.rb +4 -2
- data/lib/octokit/arguments.rb +3 -3
- data/lib/octokit/authentication.rb +10 -3
- data/lib/octokit/client/actions_artifacts.rb +71 -0
- data/lib/octokit/client/actions_secrets.rb +111 -8
- data/lib/octokit/client/actions_workflow_jobs.rb +65 -0
- data/lib/octokit/client/actions_workflow_runs.rb +23 -3
- data/lib/octokit/client/actions_workflows.rb +27 -2
- data/lib/octokit/client/apps.rb +63 -26
- data/lib/octokit/client/checks.rb +18 -9
- data/lib/octokit/client/code_scanning.rb +190 -0
- data/lib/octokit/client/codespaces_secrets.rb +108 -0
- data/lib/octokit/client/commit_branches.rb +2 -2
- data/lib/octokit/client/commit_comments.rb +8 -8
- data/lib/octokit/client/commit_pulls.rb +2 -2
- data/lib/octokit/client/commits.rb +25 -33
- data/lib/octokit/client/community_profile.rb +2 -3
- data/lib/octokit/client/contents.rb +19 -22
- data/lib/octokit/client/dependabot_secrets.rb +108 -0
- data/lib/octokit/client/deployments.rb +8 -8
- data/lib/octokit/client/downloads.rb +5 -6
- data/lib/octokit/client/emojis.rb +3 -3
- data/lib/octokit/client/environments.rb +58 -0
- data/lib/octokit/client/events.rb +4 -5
- data/lib/octokit/client/feeds.rb +4 -5
- data/lib/octokit/client/gists.rb +6 -6
- data/lib/octokit/client/gitignore.rb +3 -3
- data/lib/octokit/client/hooks.rb +9 -19
- data/lib/octokit/client/issues.rb +14 -15
- data/lib/octokit/client/labels.rb +10 -10
- data/lib/octokit/client/legacy_search.rb +3 -3
- data/lib/octokit/client/licenses.rb +3 -6
- data/lib/octokit/client/markdown.rb +3 -3
- data/lib/octokit/client/marketplace.rb +4 -4
- data/lib/octokit/client/meta.rb +4 -5
- data/lib/octokit/client/milestones.rb +5 -5
- data/lib/octokit/client/notifications.rb +6 -6
- data/lib/octokit/client/oauth_applications.rb +1 -7
- data/lib/octokit/client/objects.rb +14 -14
- data/lib/octokit/client/organizations.rb +100 -56
- data/lib/octokit/client/pages.rb +5 -7
- data/lib/octokit/client/projects.rb +44 -64
- data/lib/octokit/client/pull_requests.rb +66 -45
- data/lib/octokit/client/rate_limit.rb +9 -11
- data/lib/octokit/client/reactions.rb +62 -16
- data/lib/octokit/client/refs.rb +14 -17
- data/lib/octokit/client/releases.rb +13 -13
- data/lib/octokit/client/repositories.rb +92 -69
- data/lib/octokit/client/repository_invitations.rb +3 -3
- data/lib/octokit/client/reviews.rb +8 -8
- data/lib/octokit/client/say.rb +4 -5
- data/lib/octokit/client/search.rb +24 -10
- data/lib/octokit/client/service_status.rb +19 -9
- data/lib/octokit/client/source_import.rb +7 -12
- data/lib/octokit/client/stats.rb +10 -9
- data/lib/octokit/client/statuses.rb +5 -5
- data/lib/octokit/client/tokens.rb +31 -0
- data/lib/octokit/client/traffic.rb +6 -11
- data/lib/octokit/client/users.rb +54 -33
- data/lib/octokit/client.rb +42 -18
- data/lib/octokit/configurable.rb +51 -31
- data/lib/octokit/connection.rb +30 -21
- data/lib/octokit/default.rb +66 -35
- data/lib/octokit/enterprise_admin_client/admin_stats.rb +13 -14
- data/lib/octokit/enterprise_admin_client/license.rb +3 -4
- data/lib/octokit/enterprise_admin_client/orgs.rb +3 -4
- data/lib/octokit/enterprise_admin_client/search_indexing.rb +7 -8
- data/lib/octokit/enterprise_admin_client/users.rb +5 -4
- data/lib/octokit/enterprise_admin_client.rb +9 -3
- data/lib/octokit/enterprise_management_console_client/management_console.rb +51 -33
- data/lib/octokit/enterprise_management_console_client.rb +8 -2
- data/lib/octokit/error.rb +51 -34
- data/lib/octokit/gist.rb +3 -4
- data/lib/octokit/manage_ghes_client/manage_ghes.rb +178 -0
- data/lib/octokit/manage_ghes_client.rb +64 -0
- data/lib/octokit/middleware/follow_redirects.rb +13 -12
- data/lib/octokit/organization.rb +3 -1
- data/lib/octokit/rate_limit.rb +8 -6
- data/lib/octokit/repo_arguments.rb +3 -4
- data/lib/octokit/repository.rb +32 -25
- data/lib/octokit/response/base_middleware.rb +10 -0
- data/lib/octokit/response/feed_parser.rb +5 -7
- data/lib/octokit/response/raise_error.rb +4 -4
- data/lib/octokit/user.rb +4 -2
- data/lib/octokit/version.rb +4 -2
- data/lib/octokit/warnable.rb +4 -5
- data/lib/octokit.rb +30 -8
- data/octokit.gemspec +12 -11
- metadata +19 -31
- data/lib/octokit/client/authorizations.rb +0 -182
- data/lib/octokit/client/pub_sub_hubbub.rb +0 -111
- data/lib/octokit/preview.rb +0 -46
@@ -1,18 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
class EnterpriseAdminClient
|
3
|
-
|
4
5
|
# Methods for the Enterprise Admin Stats API
|
5
6
|
#
|
6
7
|
# @see https://developer.github.com/v3/enterprise-admin/admin_stats/
|
7
8
|
module AdminStats
|
8
|
-
|
9
9
|
# Get all available stats
|
10
10
|
#
|
11
11
|
# @return [Sawyer::Resource] All available stats
|
12
12
|
# @example Get all available stats
|
13
13
|
# @client.admin_stats
|
14
14
|
def admin_stats
|
15
|
-
get_admin_stats
|
15
|
+
get_admin_stats 'all'
|
16
16
|
end
|
17
17
|
|
18
18
|
# Get only repository-related stats
|
@@ -21,7 +21,7 @@ module Octokit
|
|
21
21
|
# @example Get only repository-related stats
|
22
22
|
# @client.admin_repository_stats
|
23
23
|
def admin_repository_stats
|
24
|
-
get_admin_stats
|
24
|
+
get_admin_stats 'repos'
|
25
25
|
end
|
26
26
|
|
27
27
|
# Get only hooks-related stats
|
@@ -30,7 +30,7 @@ module Octokit
|
|
30
30
|
# @example Get only hooks-related stats
|
31
31
|
# @client.admin_hooks_stats
|
32
32
|
def admin_hooks_stats
|
33
|
-
get_admin_stats
|
33
|
+
get_admin_stats 'hooks'
|
34
34
|
end
|
35
35
|
|
36
36
|
# Get only pages-related stats
|
@@ -39,7 +39,7 @@ module Octokit
|
|
39
39
|
# @example Get only pages-related stats
|
40
40
|
# @client.admin_pages_stats
|
41
41
|
def admin_pages_stats
|
42
|
-
get_admin_stats
|
42
|
+
get_admin_stats 'pages'
|
43
43
|
end
|
44
44
|
|
45
45
|
# Get only organization-related stats
|
@@ -48,7 +48,7 @@ module Octokit
|
|
48
48
|
# @example Get only organization-related stats
|
49
49
|
# @client.admin_organization_stats
|
50
50
|
def admin_organization_stats
|
51
|
-
get_admin_stats
|
51
|
+
get_admin_stats 'orgs'
|
52
52
|
end
|
53
53
|
|
54
54
|
# Get only user-related stats
|
@@ -57,7 +57,7 @@ module Octokit
|
|
57
57
|
# @example Get only user-related stats
|
58
58
|
# @client.admin_users_stats
|
59
59
|
def admin_users_stats
|
60
|
-
get_admin_stats
|
60
|
+
get_admin_stats 'users'
|
61
61
|
end
|
62
62
|
|
63
63
|
# Get only pull request-related stats
|
@@ -66,7 +66,7 @@ module Octokit
|
|
66
66
|
# @example Get only pull request-related stats
|
67
67
|
# @client.admin_pull_requests_stats
|
68
68
|
def admin_pull_requests_stats
|
69
|
-
get_admin_stats
|
69
|
+
get_admin_stats 'pulls'
|
70
70
|
end
|
71
71
|
|
72
72
|
# Get only issue-related stats
|
@@ -75,7 +75,7 @@ module Octokit
|
|
75
75
|
# @example Get only issue-related stats
|
76
76
|
# @client.admin_issues_stats
|
77
77
|
def admin_issues_stats
|
78
|
-
get_admin_stats
|
78
|
+
get_admin_stats 'issues'
|
79
79
|
end
|
80
80
|
|
81
81
|
# Get only milestone-related stats
|
@@ -84,7 +84,7 @@ module Octokit
|
|
84
84
|
# @example Get only milestone-related stats
|
85
85
|
# @client.admin_milestones_stats
|
86
86
|
def admin_milestones_stats
|
87
|
-
get_admin_stats
|
87
|
+
get_admin_stats 'milestones'
|
88
88
|
end
|
89
89
|
|
90
90
|
# Get only gist-related stats
|
@@ -93,7 +93,7 @@ module Octokit
|
|
93
93
|
# @example Get only gist-related stats
|
94
94
|
# @client.admin_gits_stats
|
95
95
|
def admin_gists_stats
|
96
|
-
get_admin_stats
|
96
|
+
get_admin_stats 'gists'
|
97
97
|
end
|
98
98
|
|
99
99
|
# Get only comment-related stats
|
@@ -102,7 +102,7 @@ module Octokit
|
|
102
102
|
# @example Get only comment-related stats
|
103
103
|
# @client.admin_comments_stats
|
104
104
|
def admin_comments_stats
|
105
|
-
get_admin_stats
|
105
|
+
get_admin_stats 'comments'
|
106
106
|
end
|
107
107
|
|
108
108
|
private
|
@@ -115,6 +115,5 @@ module Octokit
|
|
115
115
|
get "enterprise/stats/#{metric}"
|
116
116
|
end
|
117
117
|
end
|
118
|
-
|
119
118
|
end
|
120
119
|
end
|
@@ -1,18 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
class EnterpriseAdminClient
|
3
|
-
|
4
5
|
# Methods for the Enterprise License API
|
5
6
|
#
|
6
7
|
# @see https://developer.github.com/v3/enterprise-admin/license/
|
7
8
|
module License
|
8
|
-
|
9
9
|
# Get information about the Enterprise license
|
10
10
|
#
|
11
11
|
# @return [Sawyer::Resource] The license information
|
12
12
|
def license_info
|
13
|
-
get
|
13
|
+
get 'enterprise/settings/license'
|
14
14
|
end
|
15
|
-
|
16
15
|
end
|
17
16
|
end
|
18
17
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
class EnterpriseAdminClient
|
3
|
-
|
4
5
|
# Methods for the Enterprise Orgs API
|
5
6
|
#
|
6
7
|
# @see https://developer.github.com/v3/enterprise-admin/orgs/
|
7
8
|
module Orgs
|
8
|
-
|
9
9
|
# Create a new organization on the instance.
|
10
10
|
#
|
11
11
|
# @param login [String] The organization's username.
|
@@ -19,9 +19,8 @@ module Octokit
|
|
19
19
|
def create_organization(login, admin, options = {})
|
20
20
|
options[:login] = login
|
21
21
|
options[:admin] = admin
|
22
|
-
post
|
22
|
+
post 'admin/organizations', options
|
23
23
|
end
|
24
|
-
|
25
24
|
end
|
26
25
|
end
|
27
26
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
class EnterpriseAdminClient
|
3
|
-
|
4
5
|
# Methods for the Enterprise Search Indexing API
|
5
6
|
#
|
6
7
|
# @see https://developer.github.com/v3/enterprise-admin/search_indexing/
|
7
8
|
module SearchIndexing
|
8
|
-
|
9
9
|
# Queue a User or Organization to be indexed
|
10
10
|
#
|
11
11
|
# @param user [String] A GitHub Enterprise user or organization
|
@@ -13,7 +13,7 @@ module Octokit
|
|
13
13
|
def index_user(user)
|
14
14
|
queue_index user
|
15
15
|
end
|
16
|
-
alias
|
16
|
+
alias index_organization index_user
|
17
17
|
|
18
18
|
# Queue a Repository to be indexed
|
19
19
|
#
|
@@ -46,7 +46,7 @@ module Octokit
|
|
46
46
|
def index_users_repositories(user)
|
47
47
|
queue_index "#{user}/*"
|
48
48
|
end
|
49
|
-
alias
|
49
|
+
alias index_organizations_repositories index_users_repositories
|
50
50
|
|
51
51
|
# Queue an index of all the issues across all of a user's or
|
52
52
|
# organization's repositories
|
@@ -56,7 +56,7 @@ module Octokit
|
|
56
56
|
def index_users_repositories_issues(user)
|
57
57
|
queue_index "#{user}/*/issues"
|
58
58
|
end
|
59
|
-
alias
|
59
|
+
alias index_organizations_repositories_issues index_users_repositories_issues
|
60
60
|
|
61
61
|
# Queue an index of all the code contained in all of a user's or
|
62
62
|
# organization's repositories
|
@@ -66,7 +66,7 @@ module Octokit
|
|
66
66
|
def index_users_repositories_code(user)
|
67
67
|
queue_index "#{user}/*/code"
|
68
68
|
end
|
69
|
-
alias
|
69
|
+
alias index_organizations_repositories_code index_users_repositories_code
|
70
70
|
|
71
71
|
private
|
72
72
|
|
@@ -75,9 +75,8 @@ module Octokit
|
|
75
75
|
# @param target [String] Target to index
|
76
76
|
# @return [Sawyer:Resource] Result of the queuing containing `:message`
|
77
77
|
def queue_index(target)
|
78
|
-
post
|
78
|
+
post 'staff/indexing_jobs', target: target
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
82
81
|
end
|
83
82
|
end
|
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
class EnterpriseAdminClient
|
3
|
-
|
4
5
|
# Methods for the Enterprise User Administration API
|
5
6
|
#
|
6
7
|
# @see https://developer.github.com/enterprise/v3/enterprise-admin/users/
|
@@ -15,7 +16,7 @@ module Octokit
|
|
15
16
|
def create_user(login, email, options = {})
|
16
17
|
options[:login] = login
|
17
18
|
options[:email] = email
|
18
|
-
post
|
19
|
+
post 'admin/users', options
|
19
20
|
end
|
20
21
|
|
21
22
|
# Promote an ordinary user to a site administrator
|
@@ -111,7 +112,7 @@ module Octokit
|
|
111
112
|
# @example
|
112
113
|
# @admin_client.list_all_keys
|
113
114
|
def list_all_keys(options = {})
|
114
|
-
get
|
115
|
+
get 'admin/keys', options
|
115
116
|
end
|
116
117
|
|
117
118
|
# Deletes a public SSH keys.
|
@@ -121,7 +122,7 @@ module Octokit
|
|
121
122
|
# @example
|
122
123
|
# @admin_client.delete_key(1)
|
123
124
|
def delete_key(id, options = {})
|
124
|
-
boolean_from_response :delete,
|
125
|
+
boolean_from_response :delete, "admin/keys/#{id}", options
|
125
126
|
end
|
126
127
|
end
|
127
128
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'octokit/connection'
|
2
4
|
require 'octokit/configurable'
|
3
5
|
require 'octokit/warnable'
|
@@ -8,7 +10,6 @@ require 'octokit/enterprise_admin_client/search_indexing'
|
|
8
10
|
require 'octokit/enterprise_admin_client/users'
|
9
11
|
|
10
12
|
module Octokit
|
11
|
-
|
12
13
|
# EnterpriseAdminClient is only meant to be used by GitHub Enterprise Admins
|
13
14
|
# and provides access the Admin only API endpoints including Admin Stats,
|
14
15
|
# Management Console, and the Search Indexing API.
|
@@ -17,7 +18,6 @@ module Octokit
|
|
17
18
|
# and GitHub Enterprise.
|
18
19
|
# @see https://developer.github.com/v3/enterprise/
|
19
20
|
class EnterpriseAdminClient
|
20
|
-
|
21
21
|
include Octokit::Configurable
|
22
22
|
include Octokit::Connection
|
23
23
|
include Octokit::Warnable
|
@@ -29,12 +29,18 @@ module Octokit
|
|
29
29
|
|
30
30
|
def initialize(options = {})
|
31
31
|
# Use options passed in, but fall back to module defaults
|
32
|
+
#
|
33
|
+
# rubocop:disable Style/HashEachMethods
|
34
|
+
#
|
35
|
+
# This may look like a `.keys.each` which should be replaced with `#each_key`, but
|
36
|
+
# this doesn't actually work, since `#keys` is just a method we've defined ourselves.
|
37
|
+
# The class doesn't fulfill the whole `Enumerable` contract.
|
32
38
|
Octokit::Configurable.keys.each do |key|
|
39
|
+
# rubocop:enable Style/HashEachMethods
|
33
40
|
instance_variable_set(:"@#{key}", options[key] || Octokit.instance_variable_get(:"@#{key}"))
|
34
41
|
end
|
35
42
|
|
36
43
|
login_from_netrc unless user_authenticated? || application_authenticated?
|
37
44
|
end
|
38
|
-
|
39
45
|
end
|
40
46
|
end
|
@@ -1,34 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
class EnterpriseManagementConsoleClient
|
3
|
-
|
4
5
|
# Methods for the Enterprise Management Console API
|
5
6
|
#
|
6
7
|
# @see https://developer.github.com/v3/enterprise-admin/management_console/
|
7
8
|
module ManagementConsole
|
8
|
-
|
9
9
|
# Uploads a license for the first time
|
10
10
|
#
|
11
11
|
# @param license [String] The path to your .ghl license file.
|
12
12
|
# @param settings [Hash] A hash configuration of the initial settings.
|
13
13
|
#
|
14
|
-
# @see
|
14
|
+
# @see https://docs.github.com/en/enterprise-server@3.4/rest/enterprise-admin/management-console#create-a-github-license
|
15
15
|
# @return nil
|
16
16
|
def upload_license(license, settings = nil)
|
17
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
17
18
|
conn = faraday_configuration
|
18
19
|
|
19
|
-
params = {
|
20
|
+
params = {}
|
20
21
|
params[:license] = Faraday::UploadIO.new(license, 'binary')
|
21
22
|
params[:password] = @management_console_password
|
22
|
-
params[:settings] =
|
23
|
+
params[:settings] = settings.to_json.to_s unless settings.nil?
|
23
24
|
|
24
|
-
@last_response = conn.post(
|
25
|
+
@last_response = conn.post('/setup/api/start', params)
|
25
26
|
end
|
26
27
|
|
27
28
|
# Start a configuration process.
|
28
29
|
#
|
29
30
|
# @return nil
|
30
31
|
def start_configuration
|
31
|
-
|
32
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
33
|
+
post '/setup/api/configure', password_hash
|
32
34
|
end
|
33
35
|
|
34
36
|
# Upgrade an Enterprise installation
|
@@ -37,29 +39,32 @@ module Octokit
|
|
37
39
|
#
|
38
40
|
# @return nil
|
39
41
|
def upgrade(license)
|
42
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
40
43
|
conn = faraday_configuration
|
41
44
|
|
42
|
-
params = {
|
45
|
+
params = {}
|
43
46
|
params[:license] = Faraday::UploadIO.new(license, 'binary')
|
44
47
|
params[:api_key] = @management_console_password
|
45
|
-
@last_response = conn.post(
|
48
|
+
@last_response = conn.post('/setup/api/upgrade', params)
|
46
49
|
end
|
47
50
|
|
48
51
|
# Get information about the Enterprise installation
|
49
52
|
#
|
50
53
|
# @return [Sawyer::Resource] The installation information
|
51
54
|
def config_status
|
52
|
-
|
55
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
56
|
+
get '/setup/api/configcheck', password_hash
|
53
57
|
end
|
54
|
-
alias
|
58
|
+
alias config_check config_status
|
55
59
|
|
56
60
|
# Get information about the Enterprise installation
|
57
61
|
#
|
58
62
|
# @return [Sawyer::Resource] The settings
|
59
63
|
def settings
|
60
|
-
|
64
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
65
|
+
get '/setup/api/settings', password_hash
|
61
66
|
end
|
62
|
-
alias
|
67
|
+
alias get_settings settings
|
63
68
|
|
64
69
|
# Modify the Enterprise settings
|
65
70
|
#
|
@@ -67,48 +72,53 @@ module Octokit
|
|
67
72
|
#
|
68
73
|
# @return [nil]
|
69
74
|
def edit_settings(settings)
|
75
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
70
76
|
queries = password_hash
|
71
|
-
queries[:query][:settings] =
|
72
|
-
put
|
77
|
+
queries[:query][:settings] = settings.to_json.to_s
|
78
|
+
put '/setup/api/settings', queries
|
73
79
|
end
|
74
80
|
|
75
81
|
# Get information about the Enterprise maintenance status
|
76
82
|
#
|
77
83
|
# @return [Sawyer::Resource] The maintenance status
|
78
84
|
def maintenance_status
|
79
|
-
|
85
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
86
|
+
get '/setup/api/maintenance', password_hash
|
80
87
|
end
|
81
|
-
alias
|
88
|
+
alias get_maintenance_status maintenance_status
|
82
89
|
|
83
90
|
# Start (or turn off) the Enterprise maintenance mode
|
84
91
|
#
|
85
92
|
# @param maintenance [Hash] A hash configuration of the maintenance settings
|
86
93
|
# @return [nil]
|
87
94
|
def set_maintenance_status(maintenance)
|
95
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
88
96
|
queries = password_hash
|
89
|
-
queries[:query][:maintenance] =
|
90
|
-
post
|
97
|
+
queries[:query][:maintenance] = maintenance.to_json.to_s
|
98
|
+
post '/setup/api/maintenance', queries
|
91
99
|
end
|
92
|
-
alias
|
100
|
+
alias edit_maintenance_status set_maintenance_status
|
93
101
|
|
94
102
|
# Fetch the authorized SSH keys on the Enterprise install
|
95
103
|
#
|
96
104
|
# @return [Sawyer::Resource] An array of authorized SSH keys
|
97
105
|
def authorized_keys
|
98
|
-
|
106
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
107
|
+
get '/setup/api/settings/authorized-keys', password_hash
|
99
108
|
end
|
100
|
-
alias
|
109
|
+
alias get_authorized_keys authorized_keys
|
101
110
|
|
102
111
|
# Add an authorized SSH keys on the Enterprise install
|
103
112
|
#
|
104
113
|
# @param key Either the file path to a key, a File handler to the key, or the contents of the key itself
|
105
114
|
# @return [Sawyer::Resource] An array of authorized SSH keys
|
106
115
|
def add_authorized_key(key)
|
116
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
107
117
|
queries = password_hash
|
108
118
|
case key
|
109
119
|
when String
|
110
120
|
if File.exist?(key)
|
111
|
-
key = File.open(key,
|
121
|
+
key = File.open(key, 'r')
|
112
122
|
content = key.read.strip
|
113
123
|
key.close
|
114
124
|
else
|
@@ -120,7 +130,7 @@ module Octokit
|
|
120
130
|
end
|
121
131
|
|
122
132
|
queries[:query][:authorized_key] = content
|
123
|
-
post
|
133
|
+
post '/setup/api/settings/authorized-keys', queries
|
124
134
|
end
|
125
135
|
|
126
136
|
# Removes an authorized SSH keys from the Enterprise install
|
@@ -128,11 +138,12 @@ module Octokit
|
|
128
138
|
# @param key Either the file path to a key, a File handler to the key, or the contents of the key itself
|
129
139
|
# @return [Sawyer::Resource] An array of authorized SSH keys
|
130
140
|
def remove_authorized_key(key)
|
141
|
+
octokit_warn('The Management Console API will be deprecated in GitHub Enterprise Server 3.15.0, please use the ManageGHES client instead.')
|
131
142
|
queries = password_hash
|
132
143
|
case key
|
133
144
|
when String
|
134
145
|
if File.exist?(key)
|
135
|
-
key = File.open(key,
|
146
|
+
key = File.open(key, 'r')
|
136
147
|
content = key.read.strip
|
137
148
|
key.close
|
138
149
|
else
|
@@ -144,27 +155,34 @@ module Octokit
|
|
144
155
|
end
|
145
156
|
|
146
157
|
queries[:query][:authorized_key] = content
|
147
|
-
delete
|
158
|
+
delete '/setup/api/settings/authorized-keys', queries
|
148
159
|
end
|
149
|
-
alias
|
150
|
-
|
160
|
+
alias delete_authorized_key remove_authorized_key
|
151
161
|
end
|
162
|
+
|
152
163
|
private
|
153
164
|
|
154
165
|
def password_hash
|
155
|
-
{ :
|
166
|
+
{ query: { api_key: @management_console_password } }
|
156
167
|
end
|
157
168
|
|
158
169
|
# We fall back to raw Faraday for handling the licenses because I'm suspicious
|
159
|
-
# that Sawyer isn't handling binary POSTs correctly:
|
170
|
+
# that Sawyer isn't handling binary POSTs correctly: https://github.com/lostisland/sawyer/blob/03fca4c020f465ec42856d0486ec3991859b0aed/lib/sawyer/agent.rb#L85
|
160
171
|
def faraday_configuration
|
161
|
-
@faraday_configuration ||= Faraday.new(:
|
172
|
+
@faraday_configuration ||= Faraday.new(url: @management_console_endpoint) do |http|
|
162
173
|
http.headers[:user_agent] = user_agent
|
163
|
-
|
174
|
+
begin
|
175
|
+
http.request :multipart
|
176
|
+
rescue Faraday::Error
|
177
|
+
raise Faraday::Error, <<~ERROR
|
178
|
+
The `faraday-multipart` gem is required to upload a license.
|
179
|
+
Please add `gem "faraday-multipart"` to your Gemfile.
|
180
|
+
ERROR
|
181
|
+
end
|
164
182
|
http.request :url_encoded
|
165
183
|
|
166
184
|
# Disabling SSL is essential for certain self-hosted Enterprise instances
|
167
|
-
if
|
185
|
+
if connection_options[:ssl] && !connection_options[:ssl][:verify]
|
168
186
|
http.ssl[:verify] = false
|
169
187
|
end
|
170
188
|
|
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'octokit/configurable'
|
2
4
|
require 'octokit/connection'
|
3
5
|
require 'octokit/warnable'
|
4
6
|
require 'octokit/enterprise_management_console_client/management_console'
|
5
7
|
|
6
8
|
module Octokit
|
7
|
-
|
8
9
|
# EnterpriseManagementConsoleClient is only meant to be used by GitHub Enterprise Admins
|
9
10
|
# and provides access to the management console API endpoints.
|
10
11
|
#
|
@@ -12,7 +13,6 @@ module Octokit
|
|
12
13
|
# and GitHub Enterprise.
|
13
14
|
# @see https://developer.github.com/v3/enterprise-admin/management_console/
|
14
15
|
class EnterpriseManagementConsoleClient
|
15
|
-
|
16
16
|
include Octokit::Configurable
|
17
17
|
include Octokit::Connection
|
18
18
|
include Octokit::Warnable
|
@@ -20,7 +20,13 @@ module Octokit
|
|
20
20
|
|
21
21
|
def initialize(options = {})
|
22
22
|
# Use options passed in, but fall back to module defaults
|
23
|
+
# rubocop:disable Style/HashEachMethods
|
24
|
+
#
|
25
|
+
# This may look like a `.keys.each` which should be replaced with `#each_key`, but
|
26
|
+
# this doesn't actually work, since `#keys` is just a method we've defined ourselves.
|
27
|
+
# The class doesn't fulfill the whole `Enumerable` contract.
|
23
28
|
Octokit::Configurable.keys.each do |key|
|
29
|
+
# rubocop:enable Style/HashEachMethods
|
24
30
|
instance_variable_set(:"@#{key}", options[key] || Octokit.instance_variable_get(:"@#{key}"))
|
25
31
|
end
|
26
32
|
end
|