mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-03 11:05:56 +00:00
🚦 for following redirects
This commit is contained in:
@@ -105,7 +105,6 @@ namespace Octokit
|
||||
{
|
||||
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
|
||||
Ensure.ArgumentNotNullOrEmptyString(name, "name");
|
||||
Ensure.ArgumentNotNullOrEmptyString(reference, "reference");
|
||||
|
||||
return ApiConnection.GetRedirect(ApiUrls.RepositoryArchiveLink(owner, name, archiveFormat, reference));
|
||||
}
|
||||
|
||||
@@ -90,6 +90,14 @@ namespace Octokit
|
||||
return connection.Get<T>(uri, null, null);
|
||||
}
|
||||
|
||||
public static Task<IApiResponse<T>> GetRedirect<T>(this IConnection connection, Uri uri)
|
||||
{
|
||||
Ensure.ArgumentNotNull(connection, "connection");
|
||||
Ensure.ArgumentNotNull(uri, "uri");
|
||||
|
||||
return connection.Get<T>(uri, null, null, false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the API resource at the specified URI.
|
||||
/// </summary>
|
||||
|
||||
@@ -386,17 +386,25 @@ namespace Octokit
|
||||
return Connection.Delete(uri, data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Executes a GET to the API object at the specified URI. This operation is appropriate for
|
||||
/// API calls which wants to return the redirect URL.
|
||||
/// It expects the API to respond with a 302 Found.
|
||||
/// </summary>
|
||||
/// <param name="uri">URI of the API resource to get</param>
|
||||
/// <returns>The URL returned by the API in the Location header</returns>
|
||||
/// <exception cref="ApiException">Thrown when an API error occurs, or the API does not respond with a 302 Found</exception>
|
||||
public async Task<string> GetRedirect(Uri uri)
|
||||
{
|
||||
Ensure.ArgumentNotNull(uri, "uri");
|
||||
var response = await Connection.GetResponse<string>(uri);
|
||||
var response = await Connection.GetRedirect<string>(uri);
|
||||
|
||||
if (response.HttpResponse.StatusCode == HttpStatusCode.Redirect)
|
||||
{
|
||||
return response.HttpResponse.Headers["Location"];
|
||||
}
|
||||
|
||||
throw new ApiException("Redirect Operation expect status code or Redirect.",
|
||||
throw new ApiException("Redirect Operation expect status code of Redirect.",
|
||||
response.HttpResponse.StatusCode);
|
||||
}
|
||||
|
||||
|
||||
@@ -142,6 +142,24 @@ namespace Octokit
|
||||
return SendData<T>(uri.ApplyParameters(parameters), HttpMethod.Get, null, accepts, null, CancellationToken.None);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Performs an asynchronous HTTP GET request.
|
||||
/// Attempts to map the response to an object of type <typeparamref name="T"/>
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type to map the response to</typeparam>
|
||||
/// <param name="uri">URI endpoint to send request to</param>
|
||||
/// <param name="parameters">Querystring parameters for the request</param>
|
||||
/// <param name="accepts">Specifies accepted response media types.</param>
|
||||
/// <param name="allowAutoRedirect">To follow redirect links automatically or not</param>
|
||||
/// <returns><seealso cref="IResponse"/> representing the received HTTP response</returns>
|
||||
|
||||
public Task<IApiResponse<T>> Get<T>(Uri uri, IDictionary<string, string> parameters, string accepts, bool allowAutoRedirect)
|
||||
{
|
||||
Ensure.ArgumentNotNull(uri, "uri");
|
||||
|
||||
return SendData<T>(uri.ApplyParameters(parameters), HttpMethod.Get, null, accepts, null, CancellationToken.None, allowAutoRedirect: allowAutoRedirect);
|
||||
}
|
||||
|
||||
public Task<IApiResponse<T>> Get<T>(Uri uri, IDictionary<string, string> parameters, string accepts, CancellationToken cancellationToken)
|
||||
{
|
||||
Ensure.ArgumentNotNull(uri, "uri");
|
||||
@@ -289,7 +307,8 @@ namespace Octokit
|
||||
string contentType,
|
||||
CancellationToken cancellationToken,
|
||||
string twoFactorAuthenticationCode = null,
|
||||
Uri baseAddress = null)
|
||||
Uri baseAddress = null,
|
||||
bool allowAutoRedirect = true)
|
||||
{
|
||||
Ensure.ArgumentNotNull(uri, "uri");
|
||||
|
||||
@@ -298,6 +317,7 @@ namespace Octokit
|
||||
Method = method,
|
||||
BaseAddress = baseAddress ?? BaseAddress,
|
||||
Endpoint = uri,
|
||||
AllowAutoRedirect = allowAutoRedirect,
|
||||
};
|
||||
|
||||
return SendDataInternal<T>(body, accepts, contentType, cancellationToken, twoFactorAuthenticationCode, request);
|
||||
|
||||
@@ -232,6 +232,14 @@ namespace Octokit
|
||||
/// <returns>A <see cref="Task"/> for the request's execution.</returns>
|
||||
Task Delete(Uri uri, object data);
|
||||
|
||||
/// <summary>
|
||||
/// Executes a GET to the API object at the specified URI. This operation is appropriate for
|
||||
/// API calls which wants to return the redirect URL.
|
||||
/// It expects the API to respond with a 302 Found.
|
||||
/// </summary>
|
||||
/// <param name="uri">URI of the API resource to get</param>
|
||||
/// <returns>The URL returned by the API in the Location header</returns>
|
||||
/// <exception cref="ApiException">Thrown when an API error occurs, or the API does not respond with a 302 Found</exception>
|
||||
Task<string> GetRedirect(Uri uri);
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -32,6 +32,19 @@ namespace Octokit
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get")]
|
||||
Task<IApiResponse<T>> Get<T>(Uri uri, IDictionary<string, string> parameters, string accepts);
|
||||
|
||||
/// <summary>
|
||||
/// Performs an asynchronous HTTP GET request.
|
||||
/// Attempts to map the response to an object of type <typeparamref name="T"/>
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type to map the response to</typeparam>
|
||||
/// <param name="uri">URI endpoint to send request to</param>
|
||||
/// <param name="parameters">Querystring parameters for the request</param>
|
||||
/// <param name="accepts">Specifies accepted response media types.</param>
|
||||
/// <param name="allowAutoRedirect">To follow redirect links automatically or not</param>
|
||||
/// <returns><seealso cref="IResponse"/> representing the received HTTP response</returns>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get")]
|
||||
Task<IApiResponse<T>> Get<T>(Uri uri, IDictionary<string, string> parameters, string accepts, bool allowAutoRedirect);
|
||||
|
||||
/// <summary>
|
||||
/// Performs an asynchronous HTTP GET request.
|
||||
/// Attempts to map the response to an object of type <typeparamref name="T"/>
|
||||
|
||||
Reference in New Issue
Block a user