From ff769ab401c44d4555e1c1941b24c749922a6cd4 Mon Sep 17 00:00:00 2001 From: Luk Vermeulen Date: Fri, 3 Jan 2020 16:54:28 +0100 Subject: [PATCH] incorporate changes --- src/Bitbucket.Net/Audit/BitbucketClient.cs | 112 +++---- .../CommentLikes/BitbucketClient.cs | 6 +- .../Core/Admin/BitbucketClient.cs | 33 +- .../Core/Projects/BitbucketClient.cs | 48 ++- .../Core/Tasks/BitbucketClient.cs | 111 +++---- .../Core/Users/BitbucketClient.cs | 6 +- .../DefaultReviewers/BitbucketClient.cs | 214 ++++++------- .../PersonalAccessTokens/BitbucketClient.cs | 141 ++++----- .../RefRestrictions/BitbucketClient.cs | 281 +++++++++--------- .../Bitbucket.Net.Tests.csproj | 1 + 10 files changed, 504 insertions(+), 449 deletions(-) diff --git a/src/Bitbucket.Net/Audit/BitbucketClient.cs b/src/Bitbucket.Net/Audit/BitbucketClient.cs index 3ad8738..84b1d67 100644 --- a/src/Bitbucket.Net/Audit/BitbucketClient.cs +++ b/src/Bitbucket.Net/Audit/BitbucketClient.cs @@ -1,54 +1,58 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Bitbucket.Net.Common.Models; -using Bitbucket.Net.Models.Audit; -using Flurl.Http; - -namespace Bitbucket.Net -{ - public partial class BitbucketClient - { - private IFlurlRequest GetAuditUrl() => GetBaseUrl("/audit"); - - private IFlurlRequest GetAuditUrl(string path) => GetAuditUrl() - .AppendPathSegment(path); - - public async Task> GetProjectAuditEventsAsync(string projectKey, - int? maxPages = null, - int? limit = null, - int? start = null) - { - var queryParamValues = new Dictionary - { - ["limit"] = limit, - ["start"] = start - }; - - return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => - await GetAuditUrl($"/projects/{projectKey}/events") - .SetQueryParams(qpv) - .GetJsonAsync>() - .ConfigureAwait(false)) - .ConfigureAwait(false); - } - - public async Task> GetProjectRepoAuditEventsAsync(string projectKey, string repositorySlug, - int? maxPages = null, - int? limit = null, - int? start = null) - { - var queryParamValues = new Dictionary - { - ["limit"] = limit, - ["start"] = start - }; - - return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => - await GetAuditUrl($"/projects/{projectKey}/repos/{repositorySlug}/events") - .SetQueryParams(qpv) - .GetJsonAsync>() - .ConfigureAwait(false)) - .ConfigureAwait(false); - } - } -} +using System.Collections.Generic; +using System.Threading.Tasks; +using Bitbucket.Net.Common.Models; +using Bitbucket.Net.Models.Audit; +using Flurl.Http; + +namespace Bitbucket.Net +{ + public partial class BitbucketClient + { + private IFlurlRequest GetAuditUrl() => GetBaseUrl("/audit"); + + private IFlurlRequest GetAuditUrl(string path) => GetAuditUrl() + .AppendPathSegment(path); + + public async Task> GetProjectAuditEventsAsync(string projectKey, + int? maxPages = null, + int? limit = null, + int? start = null, + int? avatarSize = null) + { + var queryParamValues = new Dictionary + { + ["limit"] = limit, + ["start"] = start, + ["avatarSize"] = avatarSize + }; + + return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => + await GetAuditUrl($"/projects/{projectKey}/events") + .SetQueryParams(qpv) + .GetJsonAsync>() + .ConfigureAwait(false)) + .ConfigureAwait(false); + } + + public async Task> GetProjectRepoAuditEventsAsync(string projectKey, string repositorySlug, + int? maxPages = null, + int? limit = null, + int? start = null, + int? avatarSize = null) + { + var queryParamValues = new Dictionary + { + ["limit"] = limit, + ["start"] = start, + ["avatarSize"] = avatarSize + }; + + return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => + await GetAuditUrl($"/projects/{projectKey}/repos/{repositorySlug}/events") + .SetQueryParams(qpv) + .GetJsonAsync>() + .ConfigureAwait(false)) + .ConfigureAwait(false); + } + } +} diff --git a/src/Bitbucket.Net/CommentLikes/BitbucketClient.cs b/src/Bitbucket.Net/CommentLikes/BitbucketClient.cs index fff4b3f..2c8dee1 100644 --- a/src/Bitbucket.Net/CommentLikes/BitbucketClient.cs +++ b/src/Bitbucket.Net/CommentLikes/BitbucketClient.cs @@ -17,12 +17,14 @@ private IFlurlRequest GetCommentLikesUrl(string path) => GetCommentLikesUrl() public async Task> GetCommitCommentLikesAsync(string projectKey, string repositorySlug, string commitId, string commentId, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, - ["start"] = start + ["start"] = start, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => diff --git a/src/Bitbucket.Net/Core/Admin/BitbucketClient.cs b/src/Bitbucket.Net/Core/Admin/BitbucketClient.cs index 167eb41..02876da 100644 --- a/src/Bitbucket.Net/Core/Admin/BitbucketClient.cs +++ b/src/Bitbucket.Net/Core/Admin/BitbucketClient.cs @@ -70,14 +70,16 @@ public async Task AddAdminGroupUsersAsync(GroupUsers groupUsers) public async Task> GetAdminGroupMoreMembersAsync(string context, string filter = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, ["context"] = context, - ["filter"] = filter + ["filter"] = filter, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -91,14 +93,16 @@ await GetAdminUrl("/groups/more-members") public async Task> GetAdminGroupMoreNonMembersAsync(string context, string filter = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, ["context"] = context, - ["filter"] = filter + ["filter"] = filter, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -112,13 +116,15 @@ await GetAdminUrl("/groups/more-non-members") public async Task> GetAdminUsersAsync(string filter = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, - ["filter"] = filter + ["filter"] = filter, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -261,9 +267,10 @@ public async Task RemoveAdminUserFromGroupAsync(string userName, string gr return await HandleResponseAsync(response).ConfigureAwait(false); } - public async Task RenameAdminUserAsync(UserRename userRename) + public async Task RenameAdminUserAsync(UserRename userRename, int? avatarSize = null) { var response = await GetAdminUrl("users/rename") + .SetQueryParam("avatarSize", avatarSize) .PostJsonAsync(userRename) .ConfigureAwait(false); @@ -414,13 +421,15 @@ await GetAdminUrl("/permissions/groups/none") public async Task> GetAdminUserPermissionsAsync(string filter = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, - ["filter"] = filter + ["filter"] = filter, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -460,13 +469,15 @@ public async Task DeleteAdminUserPermissionsAsync(string name) public async Task> GetAdminUserPermissionsNoneAsync(string filter = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, - ["filter"] = filter + ["filter"] = filter, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => diff --git a/src/Bitbucket.Net/Core/Projects/BitbucketClient.cs b/src/Bitbucket.Net/Core/Projects/BitbucketClient.cs index 6693d47..01a937b 100644 --- a/src/Bitbucket.Net/Core/Projects/BitbucketClient.cs +++ b/src/Bitbucket.Net/Core/Projects/BitbucketClient.cs @@ -92,13 +92,15 @@ public async Task GetProjectAsync(string projectKey) public async Task> GetProjectUserPermissionsAsync(string projectKey, string filter = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, - ["filter"] = filter + ["filter"] = filter, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -495,13 +497,15 @@ public async Task> GetProjectRepositoryUserPermissio string filter = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["filter"] = filter, ["limit"] = limit, - ["start"] = start + ["start"] = start, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -528,10 +532,12 @@ public async Task UpdateProjectRepositoryUserPermissionsAsync(string proje return await HandleResponseAsync(response).ConfigureAwait(false); } - public async Task DeleteProjectRepositoryUserPermissionsAsync(string projectKey, string repositorySlug, string name) + public async Task DeleteProjectRepositoryUserPermissionsAsync(string projectKey, string repositorySlug, string name, + int? avatarSize = null) { var response = await GetProjectsReposUrl(projectKey, repositorySlug, "/permissions/users") .SetQueryParam("name", name) + .SetQueryParam("avatarSize", avatarSize) .DeleteAsync() .ConfigureAwait(false); @@ -824,10 +830,12 @@ public async Task CreateCommitCommentAsync(string projectKey, string return await HandleResponseAsync(response).ConfigureAwait(false); } - public async Task GetCommitCommentAsync(string projectKey, string repositorySlug, string commitId, long commentId) + public async Task GetCommitCommentAsync(string projectKey, string repositorySlug, string commitId, long commentId, + int? avatarSize = null) { return await GetProjectsReposUrl(projectKey, repositorySlug, $"/commits/{commitId}/comments/{commentId}") - .GetJsonAsync() + .SetQueryParam("avatarSize", avatarSize) + .GetJsonAsync() .ConfigureAwait(false); } @@ -1111,14 +1119,16 @@ public async Task> GetPullRequestActivitiesAsyn PullRequestFromTypes? fromType = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, ["fromId"] = fromId, - ["fromType"] = BitbucketHelpers.PullRequestFromTypeToString(fromType) + ["fromType"] = BitbucketHelpers.PullRequestFromTypeToString(fromType), + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -1274,12 +1284,14 @@ public async Task> GetPullRequestCommentsAsync(string pr string toHash = null, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, + ["avatarSize"] = avatarSize, ["path"] = path, ["anchorState"] = BitbucketHelpers.AnchorStateToString(anchorState), ["diffType"] = BitbucketHelpers.DiffTypeToString(diffType), @@ -1295,10 +1307,12 @@ await GetProjectsReposUrl(projectKey, repositorySlug, $"/pull-requests/{pullRequ .ConfigureAwait(false); } - public async Task GetPullRequestCommentAsync(string projectKey, string repositorySlug, long pullRequestId, long commentId) + public async Task GetPullRequestCommentAsync(string projectKey, string repositorySlug, long pullRequestId, long commentId, + int? avatarSize = null) { return await GetProjectsReposUrl(projectKey, repositorySlug) .AppendPathSegment($"/pull-requests/{pullRequestId}/comments/{commentId}") + .SetQueryParam("avatarSize", avatarSize) .GetJsonAsync() .ConfigureAwait(false); } @@ -1412,12 +1426,14 @@ public async Task GetPullRequestDiffPathAsync(string projectKey, st public async Task> GetPullRequestParticipantsAsync(string projectKey, string repositorySlug, long pullRequestId, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, - ["start"] = start + ["start"] = start, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => @@ -1492,12 +1508,14 @@ public async Task UnassignUserFromPullRequestAsync(string projectKey, stri public async Task> GetPullRequestTasksAsync(string projectKey, string repositorySlug, long pullRequestId, int? maxPages = null, int? limit = null, - int? start = null) + int? start = null, + int? avatarSize = null) { var queryParamValues = new Dictionary { ["limit"] = limit, - ["start"] = start + ["start"] = start, + ["avatarSize"] = avatarSize }; return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => diff --git a/src/Bitbucket.Net/Core/Tasks/BitbucketClient.cs b/src/Bitbucket.Net/Core/Tasks/BitbucketClient.cs index b30c3bd..ffb3703 100644 --- a/src/Bitbucket.Net/Core/Tasks/BitbucketClient.cs +++ b/src/Bitbucket.Net/Core/Tasks/BitbucketClient.cs @@ -1,55 +1,56 @@ -using System.Threading.Tasks; -using Bitbucket.Net.Models.Core.Tasks; -using Flurl.Http; - -namespace Bitbucket.Net -{ - public partial class BitbucketClient - { - private IFlurlRequest GetTasksUrl() => GetBaseUrl() - .AppendPathSegment("/tasks"); - - private IFlurlRequest GetTasksUrl(string path) => GetTasksUrl() - .AppendPathSegment(path); - - public async Task CreateTaskAsync(TaskInfo taskInfo) - { - var response = await GetTasksUrl() - .PostJsonAsync(taskInfo) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task GetTaskAsync(long taskId) - { - return await GetTasksUrl($"/{taskId}") - .GetJsonAsync() - .ConfigureAwait(false); - } - - public async Task UpdateTaskAsync(long taskId, string text) - { - var obj = new - { - id = taskId, - text - }; - - var response = await GetTasksUrl($"/{taskId}") - .PutJsonAsync(obj) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task DeleteTaskAsync(long taskId) - { - var response = await GetTasksUrl($"/{taskId}") - .DeleteAsync() - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - } -} +using System.Threading.Tasks; +using Bitbucket.Net.Models.Core.Tasks; +using Flurl.Http; + +namespace Bitbucket.Net +{ + public partial class BitbucketClient + { + private IFlurlRequest GetTasksUrl() => GetBaseUrl() + .AppendPathSegment("/tasks"); + + private IFlurlRequest GetTasksUrl(string path) => GetTasksUrl() + .AppendPathSegment(path); + + public async Task CreateTaskAsync(TaskInfo taskInfo) + { + var response = await GetTasksUrl() + .PostJsonAsync(taskInfo) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task GetTaskAsync(long taskId, int? avatarSize = null) + { + return await GetTasksUrl($"/{taskId}") + .SetQueryParam("avatarSize", avatarSize) + .GetJsonAsync() + .ConfigureAwait(false); + } + + public async Task UpdateTaskAsync(long taskId, string text) + { + var obj = new + { + id = taskId, + text + }; + + var response = await GetTasksUrl($"/{taskId}") + .PutJsonAsync(obj) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task DeleteTaskAsync(long taskId) + { + var response = await GetTasksUrl($"/{taskId}") + .DeleteAsync() + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + } +} diff --git a/src/Bitbucket.Net/Core/Users/BitbucketClient.cs b/src/Bitbucket.Net/Core/Users/BitbucketClient.cs index 540a9bd..5abd8a8 100644 --- a/src/Bitbucket.Net/Core/Users/BitbucketClient.cs +++ b/src/Bitbucket.Net/Core/Users/BitbucketClient.cs @@ -19,12 +19,14 @@ public async Task> GetUsersAsync(string filter = null, string int? maxPages = null, int? limit = null, int? start = null, + int? avatarSize = null, params string[] permissionN) { var queryParamValues = new Dictionary { ["limit"] = limit, ["start"] = start, + ["avatarSize"] = avatarSize, ["filter"] = filter, ["group"] = group, ["permission"] = permission @@ -69,10 +71,10 @@ public async Task UpdateUserCredentialsAsync(PasswordChange passwordChange return await HandleResponseAsync(response).ConfigureAwait(false); } - public async Task GetUserAsync(string userSlug) + public async Task GetUserAsync(string userSlug, int? avatarSize = null) { return await GetUsersUrl($"/{userSlug}") - .SetQueryParam("avatarSize", "64") + .SetQueryParam("avatarSize", avatarSize) .GetJsonAsync() .ConfigureAwait(false); } diff --git a/src/Bitbucket.Net/DefaultReviewers/BitbucketClient.cs b/src/Bitbucket.Net/DefaultReviewers/BitbucketClient.cs index 603875d..181ddbc 100644 --- a/src/Bitbucket.Net/DefaultReviewers/BitbucketClient.cs +++ b/src/Bitbucket.Net/DefaultReviewers/BitbucketClient.cs @@ -1,104 +1,110 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Bitbucket.Net.Models.Core.Users; -using Bitbucket.Net.Models.DefaultReviewers; -using Flurl.Http; - -namespace Bitbucket.Net -{ - public partial class BitbucketClient - { - private IFlurlRequest GetDefaultReviewersUrl() => GetBaseUrl("/default-reviewers"); - - private IFlurlRequest GetDefaultReviewersUrl(string path) => GetDefaultReviewersUrl() - .AppendPathSegment(path); - - public async Task> GetDefaultReviewerConditionsAsync(string projectKey) - { - return await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions") - .GetJsonAsync>() - .ConfigureAwait(false); - } - - public async Task CreateDefaultReviewerConditionAsync(string projectKey, DefaultReviewerPullRequestCondition condition) - { - var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions") - .PostJsonAsync(condition) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task UpdateDefaultReviewerConditionAsync(string projectKey, string defaultReviewerPullRequestConditionId, DefaultReviewerPullRequestCondition condition) - { - var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions/{defaultReviewerPullRequestConditionId}") - .PutJsonAsync(condition) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task DeleteDefaultReviewerConditionAsync(string projectKey, string defaultReviewerPullRequestConditionId) - { - var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions/{defaultReviewerPullRequestConditionId}") - .DeleteAsync() - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task> GetDefaultReviewerConditionsAsync(string projectKey, string repositorySlug) - { - return await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions") - .GetJsonAsync>() - .ConfigureAwait(false); - } - - public async Task CreateDefaultReviewerConditionAsync(string projectKey, string repositorySlug, DefaultReviewerPullRequestCondition condition) - { - var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions") - .PostJsonAsync(condition) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task UpdateDefaultReviewerConditionAsync(string projectKey, string repositorySlug, string defaultReviewerPullRequestConditionId, DefaultReviewerPullRequestCondition condition) - { - var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions/{defaultReviewerPullRequestConditionId}") - .PutJsonAsync(condition) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task DeleteDefaultReviewerConditionAsync(string projectKey, string repositorySlug, string defaultReviewerPullRequestConditionId) - { - var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions/{defaultReviewerPullRequestConditionId}") - .DeleteAsync() - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task> GetDefaultReviewersAsync(string projectKey, string repositorySlug, - int? sourceRepoId = null, - int? targetRepoId = null, - string sourceRefId = null, - string targetRefId = null) - { - var queryParamValues = new Dictionary - { - ["sourceRepoId"] = sourceRepoId, - ["targetRepoId"] = targetRepoId, - ["sourceRefId"] = sourceRefId, - ["targetRefId"] = targetRefId - }; - - return await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/reviewers") - .SetQueryParams(queryParamValues) - .GetJsonAsync>() - .ConfigureAwait(false); - } - } -} +using System.Collections.Generic; +using System.Threading.Tasks; +using Bitbucket.Net.Models.Core.Users; +using Bitbucket.Net.Models.DefaultReviewers; +using Flurl.Http; + +namespace Bitbucket.Net +{ + public partial class BitbucketClient + { + private IFlurlRequest GetDefaultReviewersUrl() => GetBaseUrl("/default-reviewers"); + + private IFlurlRequest GetDefaultReviewersUrl(string path) => GetDefaultReviewersUrl() + .AppendPathSegment(path); + + public async Task> GetDefaultReviewerConditionsAsync(string projectKey, + int? avatarSize = null) + { + return await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions") + .SetQueryParam("avatarSize", avatarSize) + .GetJsonAsync>() + .ConfigureAwait(false); + } + + public async Task CreateDefaultReviewerConditionAsync(string projectKey, DefaultReviewerPullRequestCondition condition) + { + var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions") + .PostJsonAsync(condition) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task UpdateDefaultReviewerConditionAsync(string projectKey, string defaultReviewerPullRequestConditionId, DefaultReviewerPullRequestCondition condition) + { + var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions/{defaultReviewerPullRequestConditionId}") + .PutJsonAsync(condition) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task DeleteDefaultReviewerConditionAsync(string projectKey, string defaultReviewerPullRequestConditionId) + { + var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/conditions/{defaultReviewerPullRequestConditionId}") + .DeleteAsync() + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task> GetDefaultReviewerConditionsAsync(string projectKey, string repositorySlug, + int? avatarSize = null) + { + return await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions") + .SetQueryParam("avatarSize", avatarSize) + .GetJsonAsync>() + .ConfigureAwait(false); + } + + public async Task CreateDefaultReviewerConditionAsync(string projectKey, string repositorySlug, DefaultReviewerPullRequestCondition condition) + { + var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions") + .PostJsonAsync(condition) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task UpdateDefaultReviewerConditionAsync(string projectKey, string repositorySlug, string defaultReviewerPullRequestConditionId, DefaultReviewerPullRequestCondition condition) + { + var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions/{defaultReviewerPullRequestConditionId}") + .PutJsonAsync(condition) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task DeleteDefaultReviewerConditionAsync(string projectKey, string repositorySlug, string defaultReviewerPullRequestConditionId) + { + var response = await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/conditions/{defaultReviewerPullRequestConditionId}") + .DeleteAsync() + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task> GetDefaultReviewersAsync(string projectKey, string repositorySlug, + int? sourceRepoId = null, + int? targetRepoId = null, + string sourceRefId = null, + string targetRefId = null, + int? avatarSize = null) + { + var queryParamValues = new Dictionary + { + ["sourceRepoId"] = sourceRepoId, + ["targetRepoId"] = targetRepoId, + ["sourceRefId"] = sourceRefId, + ["targetRefId"] = targetRefId, + ["avatarSize"] = avatarSize + }; + + return await GetDefaultReviewersUrl($"/projects/{projectKey}/repos/{repositorySlug}/reviewers") + .SetQueryParams(queryParamValues) + .GetJsonAsync>() + .ConfigureAwait(false); + } + } +} diff --git a/src/Bitbucket.Net/PersonalAccessTokens/BitbucketClient.cs b/src/Bitbucket.Net/PersonalAccessTokens/BitbucketClient.cs index a7e0d9e..f7298d3 100644 --- a/src/Bitbucket.Net/PersonalAccessTokens/BitbucketClient.cs +++ b/src/Bitbucket.Net/PersonalAccessTokens/BitbucketClient.cs @@ -1,69 +1,72 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Bitbucket.Net.Common.Models; -using Bitbucket.Net.Models.PersonalAccessTokens; -using Flurl.Http; - -namespace Bitbucket.Net -{ - public partial class BitbucketClient - { - private IFlurlRequest GetPatUrl() => GetBaseUrl("/access-tokens"); - - private IFlurlRequest GetPatUrl(string path) => GetPatUrl() - .AppendPathSegment(path); - - public async Task> GetUserAccessTokensAsync(string userSlug, - int? maxPages = null, - int? limit = null, - int? start = null) - { - var queryParamValues = new Dictionary - { - ["limit"] = limit, - ["start"] = start - }; - - return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => - await GetPatUrl($"/users/{userSlug}") - .SetQueryParams(qpv) - .GetJsonAsync>() - .ConfigureAwait(false)) - .ConfigureAwait(false); - } - - public async Task CreateAccessTokenAsync(string userSlug, AccessTokenCreate accessToken) - { - var response = await GetPatUrl($"/users/{userSlug}") - .PutJsonAsync(accessToken) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task GetUserAccessTokenAsync(string userSlug, string tokenId) - { - return await GetPatUrl($"/users/{userSlug}/{tokenId}") - .GetJsonAsync() - .ConfigureAwait(false); - } - - public async Task ChangeUserAccessTokenAsync(string userSlug, string tokenId, AccessTokenCreate accessToken) - { - var response = await GetPatUrl($"/users/{userSlug}/{tokenId}") - .PostJsonAsync(accessToken) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task DeleteUserAccessTokenAsync(string userSlug, string tokenId) - { - var response = await GetPatUrl($"/users/{userSlug}/{tokenId}") - .DeleteAsync() - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - } -} +using System.Collections.Generic; +using System.Threading.Tasks; +using Bitbucket.Net.Common.Models; +using Bitbucket.Net.Models.PersonalAccessTokens; +using Flurl.Http; + +namespace Bitbucket.Net +{ + public partial class BitbucketClient + { + private IFlurlRequest GetPatUrl() => GetBaseUrl("/access-tokens"); + + private IFlurlRequest GetPatUrl(string path) => GetPatUrl() + .AppendPathSegment(path); + + public async Task> GetUserAccessTokensAsync(string userSlug, + int? maxPages = null, + int? limit = null, + int? start = null, + int? avatarSize = null) + { + var queryParamValues = new Dictionary + { + ["limit"] = limit, + ["start"] = start, + ["avatarSize"] = avatarSize + }; + + return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => + await GetPatUrl($"/users/{userSlug}") + .SetQueryParams(qpv) + .GetJsonAsync>() + .ConfigureAwait(false)) + .ConfigureAwait(false); + } + + public async Task CreateAccessTokenAsync(string userSlug, AccessTokenCreate accessToken) + { + var response = await GetPatUrl($"/users/{userSlug}") + .PutJsonAsync(accessToken) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task GetUserAccessTokenAsync(string userSlug, string tokenId, int? avatarSize = null) + { + return await GetPatUrl($"/users/{userSlug}/{tokenId}") + .SetQueryParam("avatarSize", avatarSize) + .GetJsonAsync() + .ConfigureAwait(false); + } + + public async Task ChangeUserAccessTokenAsync(string userSlug, string tokenId, AccessTokenCreate accessToken) + { + var response = await GetPatUrl($"/users/{userSlug}/{tokenId}") + .PostJsonAsync(accessToken) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task DeleteUserAccessTokenAsync(string userSlug, string tokenId) + { + var response = await GetPatUrl($"/users/{userSlug}/{tokenId}") + .DeleteAsync() + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + } +} diff --git a/src/Bitbucket.Net/RefRestrictions/BitbucketClient.cs b/src/Bitbucket.Net/RefRestrictions/BitbucketClient.cs index cd3a0cb..feb98f3 100644 --- a/src/Bitbucket.Net/RefRestrictions/BitbucketClient.cs +++ b/src/Bitbucket.Net/RefRestrictions/BitbucketClient.cs @@ -1,137 +1,144 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Bitbucket.Net.Common; -using Bitbucket.Net.Common.Models; -using Bitbucket.Net.Models.RefRestrictions; -using Flurl.Http; - -namespace Bitbucket.Net -{ - public partial class BitbucketClient - { - private IFlurlRequest GetRefRestrictionsUrl() => GetBaseUrl("/branch-permissions", "2.0"); - - private IFlurlRequest GetRefRestrictionsUrl(string path) => GetRefRestrictionsUrl() - .AppendPathSegment(path); - - public async Task> GetProjectRefRestrictionsAsync(string projectKey, - RefRestrictionTypes? type = null, - RefMatcherTypes? matcherType = null, - string matcherId = null, - int? maxPages = null, - int? limit = null, - int? start = null) - { - var queryParamValues = new Dictionary - { - ["type"] = BitbucketHelpers.RefRestrictionTypeToString(type), - ["matcherType"] = BitbucketHelpers.RefMatcherTypeToString(matcherType), - ["matcherId"] = matcherId, - ["limit"] = limit, - ["start"] = start - }; - - return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => - await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions") - .SetQueryParams(qpv) - .GetJsonAsync>() - .ConfigureAwait(false)) - .ConfigureAwait(false); - } - - public async Task> CreateProjectRefRestrictionsAsync(string projectKey, params RefRestrictionCreate[] refRestrictions) - { - var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions") - .WithHeader("Accept", "application/vnd.atl.bitbucket.bulk+json") - .PostJsonAsync(refRestrictions) - .ConfigureAwait(false); - - return await HandleResponseAsync>(response).ConfigureAwait(false); - } - - public async Task CreateProjectRefRestrictionAsync(string projectKey, RefRestrictionCreate refRestriction) - { - var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions") - .PostJsonAsync(refRestriction) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task GetProjectRefRestrictionAsync(string projectKey, int refRestrictionId) - { - return await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions/{refRestrictionId}") - .GetJsonAsync() - .ConfigureAwait(false); - } - - public async Task DeleteProjectRefRestrictionAsync(string projectKey, int refRestrictionId) - { - var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions/{refRestrictionId}") - .DeleteAsync() - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task> GetRepositoryRefRestrictionsAsync(string projectKey, string repositorySlug, - RefRestrictionTypes? type = null, - RefMatcherTypes? matcherType = null, - string matcherId = null, - int? maxPages = null, - int? limit = null, - int? start = null) - { - var queryParamValues = new Dictionary - { - ["type"] = BitbucketHelpers.RefRestrictionTypeToString(type), - ["matcherType"] = BitbucketHelpers.RefMatcherTypeToString(matcherType), - ["matcherId"] = matcherId, - ["limit"] = limit, - ["start"] = start - }; - - return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => - await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions") - .SetQueryParams(qpv) - .GetJsonAsync>() - .ConfigureAwait(false)) - .ConfigureAwait(false); - } - - public async Task> CreateRepositoryRefRestrictionsAsync(string projectKey, string repositorySlug, params RefRestrictionCreate[] refRestrictions) - { - var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions") - .WithHeader("Accept", "application/vnd.atl.bitbucket.bulk+json") - .PostJsonAsync(refRestrictions) - .ConfigureAwait(false); - - return await HandleResponseAsync>(response).ConfigureAwait(false); - } - - public async Task CreateRepositoryRefRestrictionAsync(string projectKey, string repositorySlug, RefRestrictionCreate refRestriction) - { - var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions") - .PostJsonAsync(refRestriction) - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - - public async Task GetRepositoryRefRestrictionAsync(string projectKey, string repositorySlug, int refRestrictionId) - { - return await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions/{refRestrictionId}") - .GetJsonAsync() - .ConfigureAwait(false); - } - - public async Task DeleteRepositoryRefRestrictionAsync(string projectKey, string repositorySlug, int refRestrictionId) - { - var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions/{refRestrictionId}") - .DeleteAsync() - .ConfigureAwait(false); - - return await HandleResponseAsync(response).ConfigureAwait(false); - } - } -} +using System.Collections.Generic; +using System.Threading.Tasks; +using Bitbucket.Net.Common; +using Bitbucket.Net.Common.Models; +using Bitbucket.Net.Models.RefRestrictions; +using Flurl.Http; + +namespace Bitbucket.Net +{ + public partial class BitbucketClient + { + private IFlurlRequest GetRefRestrictionsUrl() => GetBaseUrl("/branch-permissions", "2.0"); + + private IFlurlRequest GetRefRestrictionsUrl(string path) => GetRefRestrictionsUrl() + .AppendPathSegment(path); + + public async Task> GetProjectRefRestrictionsAsync(string projectKey, + RefRestrictionTypes? type = null, + RefMatcherTypes? matcherType = null, + string matcherId = null, + int? maxPages = null, + int? limit = null, + int? start = null, + int? avatarSize = null) + { + var queryParamValues = new Dictionary + { + ["type"] = BitbucketHelpers.RefRestrictionTypeToString(type), + ["matcherType"] = BitbucketHelpers.RefMatcherTypeToString(matcherType), + ["matcherId"] = matcherId, + ["limit"] = limit, + ["start"] = start, + ["avatarSize"] = avatarSize + }; + + return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => + await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions") + .SetQueryParams(qpv) + .GetJsonAsync>() + .ConfigureAwait(false)) + .ConfigureAwait(false); + } + + public async Task> CreateProjectRefRestrictionsAsync(string projectKey, params RefRestrictionCreate[] refRestrictions) + { + var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions") + .WithHeader("Accept", "application/vnd.atl.bitbucket.bulk+json") + .PostJsonAsync(refRestrictions) + .ConfigureAwait(false); + + return await HandleResponseAsync>(response).ConfigureAwait(false); + } + + public async Task CreateProjectRefRestrictionAsync(string projectKey, RefRestrictionCreate refRestriction) + { + var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions") + .PostJsonAsync(refRestriction) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task GetProjectRefRestrictionAsync(string projectKey, int refRestrictionId, int? avatarSize = null) + { + return await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions/{refRestrictionId}") + .SetQueryParam("avatarSize", avatarSize) + .GetJsonAsync() + .ConfigureAwait(false); + } + + public async Task DeleteProjectRefRestrictionAsync(string projectKey, int refRestrictionId) + { + var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/restrictions/{refRestrictionId}") + .DeleteAsync() + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task> GetRepositoryRefRestrictionsAsync(string projectKey, string repositorySlug, + RefRestrictionTypes? type = null, + RefMatcherTypes? matcherType = null, + string matcherId = null, + int? maxPages = null, + int? limit = null, + int? start = null, + int? avatarSize = null) + { + var queryParamValues = new Dictionary + { + ["type"] = BitbucketHelpers.RefRestrictionTypeToString(type), + ["matcherType"] = BitbucketHelpers.RefMatcherTypeToString(matcherType), + ["matcherId"] = matcherId, + ["limit"] = limit, + ["start"] = start, + ["avatarSize"] = avatarSize + }; + + return await GetPagedResultsAsync(maxPages, queryParamValues, async qpv => + await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions") + .SetQueryParams(qpv) + .GetJsonAsync>() + .ConfigureAwait(false)) + .ConfigureAwait(false); + } + + public async Task> CreateRepositoryRefRestrictionsAsync(string projectKey, string repositorySlug, params RefRestrictionCreate[] refRestrictions) + { + var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions") + .WithHeader("Accept", "application/vnd.atl.bitbucket.bulk+json") + .PostJsonAsync(refRestrictions) + .ConfigureAwait(false); + + return await HandleResponseAsync>(response).ConfigureAwait(false); + } + + public async Task CreateRepositoryRefRestrictionAsync(string projectKey, string repositorySlug, RefRestrictionCreate refRestriction) + { + var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions") + .PostJsonAsync(refRestriction) + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + + public async Task GetRepositoryRefRestrictionAsync(string projectKey, string repositorySlug, int refRestrictionId, + int? avatarSize = null) + { + return await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions/{refRestrictionId}") + .SetQueryParam("avatarSize", avatarSize) + .GetJsonAsync() + .ConfigureAwait(false); + } + + public async Task DeleteRepositoryRefRestrictionAsync(string projectKey, string repositorySlug, int refRestrictionId) + { + var response = await GetRefRestrictionsUrl($"/projects/{projectKey}/repos/{repositorySlug}/restrictions/{refRestrictionId}") + .DeleteAsync() + .ConfigureAwait(false); + + return await HandleResponseAsync(response).ConfigureAwait(false); + } + } +} diff --git a/test/Bitbucket.Net.Tests/Bitbucket.Net.Tests.csproj b/test/Bitbucket.Net.Tests/Bitbucket.Net.Tests.csproj index 8f48565..0ea0399 100644 --- a/test/Bitbucket.Net.Tests/Bitbucket.Net.Tests.csproj +++ b/test/Bitbucket.Net.Tests/Bitbucket.Net.Tests.csproj @@ -12,6 +12,7 @@ + all