diff --git a/Octokit/Clients/StarredClient.cs b/Octokit/Clients/StarredClient.cs index 168fcf0f..6e24af1f 100644 --- a/Octokit/Clients/StarredClient.cs +++ b/Octokit/Clients/StarredClient.cs @@ -116,5 +116,27 @@ namespace Octokit return false; } } + + public async Task RemoveStarFromRepo(string owner, string repo) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNull(repo, "repo"); + + try + { + var response = await Connection.DeleteAsync(ApiUrls.Starred(owner, repo)) + .ConfigureAwait(false); + + if (response.StatusCode != HttpStatusCode.NotFound && response.StatusCode != HttpStatusCode.NoContent) + { + throw new ApiException("Invalid Status Code returned. Expected a 204 or a 404", response.StatusCode); + } + return response.StatusCode == HttpStatusCode.NoContent; + } + catch (NotFoundException) + { + return false ; + } + } } } diff --git a/Octokit/Http/Connection.cs b/Octokit/Http/Connection.cs index 36fcb14a..11179137 100644 --- a/Octokit/Http/Connection.cs +++ b/Octokit/Http/Connection.cs @@ -205,7 +205,7 @@ namespace Octokit return Run(request); } - public Task DeleteAsync(Uri uri) + public Task> DeleteAsync(Uri uri) { Ensure.ArgumentNotNull(uri, "uri"); diff --git a/Octokit/Http/IConnection.cs b/Octokit/Http/IConnection.cs index 548da217..dfc0681f 100644 --- a/Octokit/Http/IConnection.cs +++ b/Octokit/Http/IConnection.cs @@ -13,7 +13,7 @@ namespace Octokit Task> PutAsync(Uri uri, object body); Task> PutAsync(Uri uri, object body, string twoFactorAuthenticationCode); - Task DeleteAsync(Uri uri); + Task> DeleteAsync(Uri uri); Uri BaseAddress { get; }