Exemplo n.º 1
0
        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);
 }