diff --git a/lib/octokit/default.rb b/lib/octokit/default.rb index ca2e2fb73..47bdf3a6c 100644 --- a/lib/octokit/default.rb +++ b/lib/octokit/default.rb @@ -12,6 +12,11 @@ rescue LoadError Octokit::Warnable.octokit_warn 'To use retry middleware with Faraday v2.0+, install `faraday-retry` gem' end + begin + require 'faraday/multipart' + rescue LoadError + Octokit::Warnable.octokit_warn 'To use retry middleware with Faraday v2.0+, install `faraday-multipart` gem' + end end module Octokit diff --git a/lib/octokit/manage_ghes_client/manage_ghes.rb b/lib/octokit/manage_ghes_client/manage_ghes.rb index d5f0c9476..806614a8e 100644 --- a/lib/octokit/manage_ghes_client/manage_ghes.rb +++ b/lib/octokit/manage_ghes_client/manage_ghes.rb @@ -9,7 +9,7 @@ class ManageGHESClient module ManageAPI # Get information about the maintenance status of the GHES instance # - # @return [Sawyer::Resource] The maintenance mode status + # @return [nil] def maintenance_mode conn = authenticated_client @@ -33,19 +33,19 @@ def set_maintenance_mode(enabled, options = {}) # # @param license [String] The path to your .ghl license file. # - # @see https://docs.github.com/en/enterprise-server@3.4/rest/enterprise-admin/management-console#create-a-github-license - # @return nil + # @return [nil] def upload_license(license) conn = authenticated_client conn.request :multipart params = {} params[:license] = Faraday::FilePart.new(license, 'binary') - @last_response = conn.put('/manage/v1/config/license', params, { 'Content-Type' => 'multipart/form-data' }) + params[:password] = @manage_ghes_password + @last_response = conn.post('/manage/v1/config/init', params, { 'Content-Type' => 'multipart/form-data' }) end # Start a configuration process. # - # @return nil + # @return [nil] def start_configuration conn = authenticated_client @last_response = conn.post('/manage/v1/config/apply') @@ -53,7 +53,7 @@ def start_configuration # Get information about the Enterprise installation # - # @return [Sawyer::Resource] The installation information + # @return [nil] def config_status conn = authenticated_client @last_response = conn.get('/manage/v1/config/apply') @@ -62,7 +62,7 @@ def config_status # Get information about the Enterprise installation # - # @return [Sawyer::Resource] The settings + # @return [nil] def settings conn = authenticated_client @last_response = conn.get('/manage/v1/config/settings') @@ -88,7 +88,7 @@ def authorized_keys # Add an authorized SSH keys on the Enterprise install # # @param key Either the file path to a key, a File handler to the key, or the contents of the key itself - # @return [Sawyer::Resource] An array of authorized SSH keys + # @return [nil] def add_authorized_key(key) conn = authenticated_client case key @@ -113,7 +113,7 @@ def add_authorized_key(key) # Removes an authorized SSH keys from the Enterprise install # # @param key Either the file path to a key, a File handler to the key, or the contents of the key itself - # @return [Sawyer::Resource] An array of authorized SSH keys + # @return [nil] def remove_authorized_key(key) conn = authenticated_client case key diff --git a/spec/cassettes/Octokit_ManageGHESClient_ManageAPI/_upload_license/upload_a_new_license.json b/spec/cassettes/Octokit_ManageGHESClient_ManageAPI/_upload_license/upload_a_new_license.json index d5a6231a2..4e6df5abf 100644 --- a/spec/cassettes/Octokit_ManageGHESClient_ManageAPI/_upload_license/upload_a_new_license.json +++ b/spec/cassettes/Octokit_ManageGHESClient_ManageAPI/_upload_license/upload_a_new_license.json @@ -2,24 +2,24 @@ "http_interactions": [ { "request": { - "method": "put", - "uri": "<>/manage/v1/config/license", + "method": "post", + "uri": "<>/manage/v1/config/init", "body": { "encoding": "ASCII-8BIT", - "base64_string": "anqDHd6gSAjXRl5IUvRNla+HL\nwkjkmQMlgLD1iUomBHeBrw/LsuW+DrfUqvTaBFdAYxN5e1grmlHaBREkVADd\nqD/Tp1x8Wwte2oFVTRr3Q2AMwe5JyFsp6st0Vx7Vn8SHcxustqiH1fciJLt8\nQTmMr6yYHsZ+2YPySFDjirAbSH9xSX+zKG25VqDmMWwsjBIjaQMGfbaLDygO\nDpRvo63BnoPq2B/uxLHAE3gEUZWP8ukN9cuBPB8YxmWGpsrxeQrrfPZl4cG9\nQPBhSW+0NMmo5H3BQl/z8WZtje8uBwShb6Sc2RyqMyH2GDin3XTW78JzWl9i\nuyxOvG3FHwRnA2txkuM+54ikgwWO6vKKJFoan1X8_LOLNOTREAL_/eZ3FOUm1RCXbDrK7DwY\nqftO+hhL0kFZIz+O/Dg/a/OpeCP3UPcEaNmpkZbfXqpMsIxSGi96pisMJl6M\nRNJ6ZyiFf5CqpliiwCn9I3w9NWIXJhlLzimVwzX705s6a9ML5\n72gA8iFY3THXfNt5l7WdmssXegborR+ITb8cwXDdAAFXIZBurX4uQUWcN+tB\n9W07iqmpR7UzmPPQhcNZX/gmDjnkfaXx9neyydM6rY1yWhzEZ14WJwJLIne0uqU90SeqKDSPwzaTMbEo2ItVUgDbbEqNf/tXU2ZKnnU68Aywt5bfjLOM8sV6\ndmZHUCx6ygqMpRnlJwnsW/ikq00hJsKHS0TSJq4EnDiZaCyZYwjR7eHn2uGP\n/ufqoXKDWIY6Wxr4pyLcauDFUBnq75lEn7nA9knoDHmgrBFCL9bQcM+/Wh+8\nZ7I1NG5XUubvWCH8ywLhm6a5ftPKPsQh5mDurB55+gUxatRqgXS9XnfxSnac\nwlP02RpRlxPKfbMZqVsO2KW2TYUGXTpFCyZYLCau1Uw/+qJ/8z1ugURLjzJI3j2x4I3v6Mc952\n0TcebG/ZvuTaKft6dP+ZW++86Oynnn3T6j8BDQotLS0tLS0tLS0tLS0tUnVi\neU11bHRpcGFydFBvc3QNCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0\nYTsgbmFtZT0icGFzc3dvcmQiDQoNC\n" + "base64_string": "anqDHd6gSAjXRl5IUvRNla+HL\nwkjkmQMlgLD1iUomBHeBrw/LsuW+DrfUqvTaBFdAYxN5e1grmlHaBREkVADd\nqD/Tp1x8Wwte2oFVTRr3Q2AMwe5JyFsp6st0Vx7Vn8SHcxustqiH1fciJLt8\nQTmMr6yYHsZ+2YPySFDjirAbSH9xSX+zKG25VqDmMWwsjBIjaQMGfbaLDygO\nDpRvo63BnoPq2B/uxLHAE3gEUZWP8ukN9cuBPB8YxmWGpsrxeQrrfPZl4cG9\nQPBhSW+0NMmo5H3BQl/z8WZtje8uBwShb6Sc2RyqMyH2GDin3XTW78JzWl9i\nuyxOvG3FHwRnA2txkuM+54ikgwWO6vKKJFoan1X8_LOLNOTREAL_/eZ3FOUm1RCXbDrK7DwY\nqftO+hhL0kFZIz+O/Dg/a/OpeCP3UPcEaNmpkZbfXqpMsIxSGi96pisMJl6M\nRNJ6ZyiFf5CqpliiwCn9I3w9NWIXJhlLzimVwzX705s6a9ML5\n72gA8iFY3THXfNt5l7WdmssXegborR+ITb8cwXDdAAFXIZBurX4uQUWcN+tB\n9W07iqmpR7UzmPPQhcNZX/gmDjnkfaXx9neyydM6rY1yWhzEZ14WJwJLIne0uqU90SeqKDSPwzaTMbEo2ItVUgDbbEqNf/tXU2ZKnnU68Aywt5bfjLOM8sV6\ndmZHUCx6ygqMpRnlJwnsW/ikq00hJsKHS0TSJq4EnDiZaCyZYwjR7eHn2uGP\n/ufqoXKDWIY6Wxr4pyLcauDFUBnq75lEn7nA9knoDHmgrBFCL9bQcM+/Wh+8\nZ7I1NG5XUubvWCH8ywLhm6a5ftPKPsQh5mDurB55+gUxatRqgXS9XnfxSnac\nwlP02RpRlxPKfbMZqVsO2KW2TYUGXTpFCyZYLCau1Uw/+qJ/8z1ugURLjzJI3j2x4I3v6Mc952\n0TcebG/ZvuTaKft6dP+ZW++86Oynnn3T6j8BDQotLS0tLS0tLS0tLS0tUnVi\neU11bHRpcGFydFBvc3QNCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0\nYTsgbmFtZT0icGFzc3dvcmQiDQoNC\n\n" }, "headers": { "User-Agent": [ "Octokit Ruby Gem 8.1.0" ], "Content-Type": [ - "multipart/form-data; boundary=-----------RubyMultipartPost-e8412453628eb4b99f71583f2234ae4f" + "multipart/form-data; boundary=-----------RubyMultipartPost-2cfc1d28d56dda99e4bebdcded8c4f41" ], "Authorization": [ "Basic YXBpX2tleTpRMjBVcm45aWs=" ], "Content-Length": [ - "17459" + "17583" ], "Accept-Encoding": [ "gzip;q=1.0,deflate;q=0.6,identity;q=0.3" @@ -31,36 +31,21 @@ }, "response": { "status": { - "code": 201, - "message": "Created" + "code": 202, + "message": "Accepted" }, "headers": { - "Content-Security-Policy": [ - "default-src 'none';" - ], "Content-Type": [ "application/json; charset=utf-8" ], - "Server": [ - "GHES Manage" - ], - "Strict-Transport-Security": [ - "max-age=63072000; includeSubDomains; preload" - ], - "X-Content-Type-Options": [ - "nosniff" - ], - "X-Frame-Options": [ - "DENY" - ], - "X-Xss-Protection": [ - "0" - ], "Date": [ - "Tue, 28 May 2024 10:16:58 GMT" + "Mon, 03 Jun 2024 11:12:05 GMT" ], "Content-Length": [ "3" + ], + "X-Frame-Options": [ + "DENY" ] }, "body": { @@ -68,7 +53,7 @@ "base64_string": "e30K\n" } }, - "recorded_at": "Tue, 28 May 2024 10:16:58 GMT" + "recorded_at": "Mon, 03 Jun 2024 11:12:05 GMT" } ], "recorded_with": "VCR 6.2.0" diff --git a/spec/octokit/ghes_manage_client/ghes_manage_spec.rb b/spec/octokit/ghes_manage_client/ghes_manage_spec.rb index fafb6a5e2..4cbf3fac0 100644 --- a/spec/octokit/ghes_manage_client/ghes_manage_spec.rb +++ b/spec/octokit/ghes_manage_client/ghes_manage_spec.rb @@ -35,8 +35,8 @@ describe '.upload_license', :vcr do it 'upload a new license' do @manage_ghes.upload_license(@license) - expect(@manage_ghes.last_response.status).to eq(201) - assert_requested :put, github_manage_ghes_url('/manage/v1/config/license') + expect(@manage_ghes.last_response.status).to eq(202) + assert_requested :post, github_manage_ghes_url('/manage/v1/config/init') end end # .upload_license