key needs to be specified as a request object with an "authorized_key" parameter. Also the management console API wants it as a URL parameter rather than as a json body payload

Fix UriExtension ApplyParameter() to be able to apply parameters to non absolute URLs
This commit is contained in:
Ryan Gribble
2016-07-05 19:38:23 +10:00
committed by Brendan Forster
parent a665ecd104
commit 257fe4429a
5 changed files with 53 additions and 17 deletions
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
namespace Octokit
@@ -45,6 +46,7 @@ namespace Octokit
var endpoint = ApiUrls.EnterpriseManagementConsoleMaintenance(managementConsolePassword, ApiConnection.Connection.BaseAddress);
endpoint = CorrectEndpointForManagementConsole(endpoint);
return ApiConnection.Get<MaintenanceModeResponse>(endpoint);
}
@@ -65,36 +67,38 @@ namespace Octokit
return ApiConnection.Post<MaintenanceModeResponse>(endpoint, maintenance.ToFormUrlEncodedParameterString());
}
public Task<IReadOnlyList<AuthorizedManagementKey>> GetAllAuthorizedKeys(string managementConsolePassword)
public Task<IReadOnlyList<AuthorizedKey>> GetAllAuthorizedKeys(string managementConsolePassword)
{
Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
var endpoint = ApiUrls.EnterpriseManagementConsoleAuthorizedKeys(managementConsolePassword);
endpoint = CorrectEndpointForManagementConsole(endpoint);
return ApiConnection.Get<IReadOnlyList<AuthorizedManagementKey>>(endpoint);
endpoint = CorrectEndpointForManagementConsole(endpoint);
return ApiConnection.Get<IReadOnlyList<AuthorizedKey>>(endpoint);
}
public Task<IReadOnlyList<AuthorizedManagementKey>> AddAuthorizedKey(string key, string managementConsolePassword)
public Task<IReadOnlyList<AuthorizedKey>> AddAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword)
{
Ensure.ArgumentNotNullOrEmptyString(key, "publicKeyContent");
Ensure.ArgumentNotNull(authorizedKey, "authorizedKey");
Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
var endpoint = ApiUrls.EnterpriseManagementConsoleAuthorizedKeys(managementConsolePassword);
endpoint = CorrectEndpointForManagementConsole(endpoint);
endpoint = endpoint.ApplyParameters(authorizedKey.ToParametersDictionary());
return ApiConnection.Post<IReadOnlyList<AuthorizedManagementKey>>(endpoint, key);
endpoint = CorrectEndpointForManagementConsole(endpoint);
return ApiConnection.Post<IReadOnlyList<AuthorizedKey>>(endpoint);
}
public Task DeleteAuthorizedKey(string key, string managementConsolePassword)
public Task DeleteAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword)
{
Ensure.ArgumentNotNullOrEmptyString(key, "publicKeyContent");
Ensure.ArgumentNotNull(authorizedKey, "authorizedKey");
Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
var endpoint = ApiUrls.EnterpriseManagementConsoleAuthorizedKeys(managementConsolePassword);
endpoint = CorrectEndpointForManagementConsole(endpoint);
endpoint = endpoint.ApplyParameters(authorizedKey.ToParametersDictionary());
return ApiConnection.Delete(endpoint, key);
endpoint = CorrectEndpointForManagementConsole(endpoint);
return ApiConnection.Delete(endpoint);
}
}
}
@@ -29,10 +29,10 @@ namespace Octokit
/// <returns>The <see cref="MaintenanceModeResponse"/>.</returns>
Task<MaintenanceModeResponse> EditMaintenanceMode(UpdateMaintenanceRequest maintenance, string managementConsolePassword);
Task<IReadOnlyList<AuthorizedManagementKey>> GetAllAuthorizedKeys(string managementConsolePassword);
Task<IReadOnlyList<AuthorizedKey>> GetAllAuthorizedKeys(string managementConsolePassword);
Task<IReadOnlyList<AuthorizedManagementKey>> AddAuthorizedKey(string key, string managementConsolePassword);
Task<IReadOnlyList<AuthorizedKey>> AddAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword);
Task DeleteAuthorizedKey(string key, string managementConsolePassword);
Task DeleteAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword);
}
}
+6
View File
@@ -56,15 +56,21 @@ namespace Octokit
: uri.OriginalString.Substring(0, hasQueryString);
string queryString;
string uriWithoutQuery;
if (uri.IsAbsoluteUri)
{
queryString = uri.Query;
uriWithoutQuery = uri.AbsoluteUri;
}
else
{
queryString = hasQueryString == -1
? ""
: uri.OriginalString.Substring(hasQueryString);
uriWithoutQuery = hasQueryString == -1
? uri.ToString()
: uri.OriginalString.Substring(0, hasQueryString);
}
var values = queryString.Replace("?", "")
@@ -0,0 +1,26 @@
using System.Diagnostics;
using System.Globalization;
using Octokit.Internal;
namespace Octokit
{
[DebuggerDisplay("{DebuggerDisplay,nq}")]
public class AuthorizedKeyRequest : RequestParameters
{
public AuthorizedKeyRequest(string authorizedKey)
{
AuthorizedKey = authorizedKey;
}
[Parameter(Key = "authorized_key")]
public string AuthorizedKey { get; private set; }
internal string DebuggerDisplay
{
get
{
return string.Format(CultureInfo.InvariantCulture, "AuthorizedKey: {0}", AuthorizedKey);
}
}
}
}
@@ -2,12 +2,12 @@
namespace Octokit
{
public class AuthorizedManagementKey
public class AuthorizedKey
{
public AuthorizedManagementKey()
public AuthorizedKey()
{ }
public AuthorizedManagementKey(string key, string prettyPrint, string comment)
public AuthorizedKey(string key, string prettyPrint, string comment)
{
Key = key;
PrettyPrint = prettyPrint;