public async Task <PullRequest> GetPullRequestForBranches(string repositoryName, string ownerName, string sourceBranch, string destBranch) { var url = EnterpriseApiUrls.PullRequests(ownerName, repositoryName); var response = await RestClient.GetAllPages <EnterprisePullRequest>(url, query : new QueryString() { { "at", "refs/heads/" + destBranch }, { "state", "open" } }); return(response.FirstOrDefault(x => x.Source.DisplayId == sourceBranch)?.MapTo <PullRequest>()); }
public async Task CreatePullRequest(PullRequest pullRequest, string repositoryName, string owner) { //pullRequest.Author = new User() //{ // Username = Connection.Credentials.Login //}; var url = EnterpriseApiUrls.PullRequests(owner, repositoryName); var request = new YouTrackRestRequest(url, Method.POST); request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest.MapTo <EnterprisePullRequest>()), ParameterType.RequestBody); await RestClient.ExecuteTaskAsync(request); }
public async Task <IEnumerable <Commit> > GetCommitsRange(string repoName, string owner, Branch fromBranch, Branch toBranch) { var url = EnterpriseApiUrls.Commits(owner, repoName); var queryString = new QueryString() { { "until", fromBranch.Target.Hash }, { "since", toBranch.Target.Hash }, }; var response = await RestClient.GetAllPages <EnterpriseCommit>(url, query : queryString); return(response.MapTo <List <Commit> >()); }
public async Task UpdatePullRequest(PullRequest pullRequest, string repoName, string owner) { //pullRequest.Author = new User() //{ // Username = Connection.Credentials.Login //}; pullRequest.Destination = null;//throws exception if the same dest is set. Unless we allow to change it, leave it null var url = EnterpriseApiUrls.PullRequest(owner, repoName, pullRequest.Id); var request = new YouTrackRestRequest(url, Method.PUT); request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest.MapTo <EnterprisePullRequest>()), ParameterType.RequestBody); await RestClient.ExecuteTaskAsync(request); }
public async Task <Repository> CreateRepository(Repository repository) { var url = EnterpriseApiUrls.CreateRepositories(Connection.Credentials.Login); var request = new BitbucketRestRequest(url, Method.POST); var enterpriseRepo = new EnterpriseRepository() { Name = repository.Name, IsPublic = !repository.IsPrivate }; request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(enterpriseRepo), ParameterType.RequestBody); var response = await RestClient.ExecuteTaskAsync <EnterpriseRepository>(request); return(response.Data.MapTo <Repository>()); }
public async Task <IEnumerable <UserShort> > GetRepositoryUsers(string repositoryName, string ownerName, string filter) { var url = EnterpriseApiUrls.Users(); var queryString = new QueryString() { { "permission", "LICENSED_USER" }, { "permission.1", "REPO_READ" }, { "permission.1.projectKey", ownerName }, { "permission.1.repositorySlug", repositoryName }, { "filter", filter } }; var response = await RestClient.GetAllPages <EnterpriseUser>(url, query : queryString); return(response.MapTo <List <UserShort> >()); }
public async Task <IEnumerable <Comment> > GetPullRequestComments(string repositoryName, string ownerName, long id) { var url = EnterpriseApiUrls.PullRequestActivities(ownerName, repositoryName, id); var activities = await RestClient.GetAllPages <EnterpriseCommentActivity>(url); var commentActivities = activities.Where(x => x.Action == "COMMENTED").ToList(); foreach (var comment in commentActivities) { comment.Comment.Anchor = comment.Anchor; AssignCommentParent(comment.Comment); } var comments = commentActivities.Select(x => x.Comment).Flatten(x => true, x => x.Comments).ToList(); return(comments.MapTo <List <Comment> >()); }
public async Task <IEnumerable <PullRequest> > GetPullRequests(string repositoryName, string ownerName, int limit = 50, IPullRequestQueryBuilder queryBuilder = null) { var url = EnterpriseApiUrls.PullRequests(ownerName, repositoryName); var queryString = new QueryString(); if (queryBuilder != null) { foreach (var param in queryBuilder.GetQueryParameters()) { queryString.Add(param.Key, param.Value); } } return((await RestClient.GetAllPages <EnterprisePullRequest>(url, limit, queryString)) .MapTo <List <PullRequest> >()); }
public async Task CreatePullRequest(PullRequest pullRequest, string repositoryName, string owner) { pullRequest.Author = new User() { UserName = Connection.Credentials.Login }; pullRequest.Reviewers = pullRequest.Reviewers.Select(x => new User() { UserName = x.UserName, Uuid = x.Uuid }).ToList(); var url = EnterpriseApiUrls.PullRequests(owner, repositoryName); var request = new BitbucketRestRequest(url, Method.POST); request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest.MapTo <EnterprisePullRequest>()), ParameterType.RequestBody); await RestClient.ExecuteTaskAsync(request); }
public async Task <Comment> EditPullRequestComment(string repositoryName, string ownerName, long pullRequestId, long id, string content, long commentVersion) { var url = EnterpriseApiUrls.PullRequestComment(ownerName, repositoryName, pullRequestId, id); var request = new YouTrackRestRequest(url, Method.PUT); var body = new EnterpriseComment() { Text = content, Id = id, Version = commentVersion }; request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(body), ParameterType.RequestBody); var response = await RestClient.ExecuteTaskAsync <EnterpriseComment>(request); return(response.Data.MapTo <Comment>()); }
public async Task UpdatePullRequest(PullRequest pullRequest, string repoName, string owner) { pullRequest.Author = new User() { UserName = Connection.Credentials.Login }; pullRequest.Reviewers = pullRequest.Reviewers.Select(x => new User() { UserName = x.UserName, Uuid = x.Uuid }).ToList(); pullRequest.Destination = null;//throws exception if the same dest is set. Unless we allow to change it, leave it null var url = EnterpriseApiUrls.PullRequest(owner, repoName, pullRequest.Id); var request = new BitbucketRestRequest(url, Method.PUT); request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest.MapTo <EnterprisePullRequest>()), ParameterType.RequestBody); await RestClient.ExecuteTaskAsync(request); }
public async Task <IEnumerable <Commit> > GetPullRequestCommits(string repositoryName, string ownerName, long id) { var url = EnterpriseApiUrls.PullRequestCommits(ownerName, repositoryName, id); var data = await RestClient.GetAllPages <EnterpriseCommit>(url); var commits = data.MapTo <List <Commit> >(); var authors = (await GetAuthors(repositoryName, ownerName)).ToList(); foreach (var commit in commits) { commit.CommitHref = $"{Connection.MainUrl}projects/{ownerName}/repos/{repositoryName}/pull-requests/{id}/commits/{commit.Hash}"; if (commit.Author.User.Links.Avatar == null) { SetAuthorAvatar(commit, authors); } } return(commits); }
public async Task <IEnumerable <FileDiff> > GetCommitsDiff(string repoName, string owner, string fromCommit, string toCommit) { var url = EnterpriseApiUrls.CommitsDiff(owner, repoName); var queryString = new QueryString() { { "from", fromCommit }, { "to", toCommit }, }; var request = new YouTrackRestRequest(url, Method.GET); foreach (var param in queryString) { request.AddQueryParameter(param.Key, param.Value); } var response = await RestClient.ExecuteTaskAsync <EnterpriseDiffResponse>(request); var fileDiffs = ParseFileDiffs(response); return(fileDiffs); }
public async Task DisapprovePullRequest(string repositoryName, string ownerName, long id) { var url = EnterpriseApiUrls.PullRequestApprove(ownerName, repositoryName, id); var request = new YouTrackRestRequest(url, Method.DELETE); await RestClient.ExecuteTaskAsync(request); }
public async Task DeclinePullRequest(string repositoryName, string ownerName, long id, string version) { var url = EnterpriseApiUrls.PullRequestDecline(ownerName, repositoryName, id, version); var request = new YouTrackRestRequest(url, Method.POST); await RestClient.ExecuteTaskAsync(request); }
public async Task MergePullRequest(string repositoryName, string ownerName, MergeRequest mergeRequest) { var url = EnterpriseApiUrls.PullRequestMerge(ownerName, repositoryName, mergeRequest.Id, mergeRequest.Version); var request = new YouTrackRestRequest(url, Method.POST); await RestClient.ExecuteTaskAsync(request); }
public Task <string> GetFileContent(string repoName, string owner, string hash, string path) { return(GetAllLines(EnterpriseApiUrls.DownloadFile(owner, repoName, hash, path))); }
public async Task DeletePullRequestComment(string repositoryName, string ownerName, long pullRequestId, long id, long version) { var url = EnterpriseApiUrls.PullRequestComment(ownerName, repositoryName, pullRequestId, id) + $"?version={version}"; var request = new YouTrackRestRequest(url, Method.DELETE); await RestClient.ExecuteTaskAsync(request); }