Example #1
0
        public async Task <Comment> AddPullRequestComment(string repositoryName, string ownerName, long id, string content, long?lineFrom = null, long?lineTo = null, string fileName = null, long?parentId = null)
        {
            var url     = ApiUrls.PullRequestCommentsV1(ownerName, repositoryName, id);
            var request = new BitbucketRestRequest(url, Method.POST);

            var body = new CommentV1()
            {
                Content  = content,
                LineFrom = parentId != null ? null : lineFrom,
                LineTo   = parentId != null ? null : lineTo,
                FileName = fileName,
                ParentId = parentId
            };

            if (body.LineFrom != null)//we can't set both
            {
                body.LineTo = null;
            }

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(body), ParameterType.RequestBody);

            var response = await _versionOneClient.ExecuteTaskAsync <CommentV1>(request);

            return(response.Data.MapTo <Comment>());
        }
Example #2
0
        public async Task <IEnumerable <Comment> > GetPullRequestComments(string repositoryName, string ownerName, long id)
        {
            var url     = ApiUrls.PullRequestCommentsV1(ownerName, repositoryName, id);
            var request = new BitbucketRestRequest(url, Method.GET);

            return((await _versionOneClient.ExecuteTaskAsync <List <CommentV1> >(request)).Data.MapTo <List <Comment> >());
        }
Example #3
0
        public async Task <IteratorBasedPage <PullRequest> > GetPullRequestsPage(string repositoryName, string ownerName, int page, int limit = 50,
                                                                                 IPullRequestQueryBuilder builder = null)
        {
            var url     = EnterpriseApiUrls.PullRequests(ownerName, repositoryName);
            var request = new BitbucketRestRequest(url, Method.GET);

            if (builder != null)
            {
                foreach (var param in builder.GetQueryParameters())
                {
                    request.AddQueryParameter(param.Key, param.Value);
                }
            }


            request.AddQueryParameter("limit", limit.ToString()).AddQueryParameter("start", ((page - 1) * limit).ToString());

            var res = (await RestClient.ExecuteTaskAsync <EnterpriseIteratorBasedPage <EnterprisePullRequest> >(request)).Data;

            return(new IteratorBasedPage <PullRequest>()
            {
                Values = res.Values.MapTo <List <PullRequest> >(),
                Size = res.Size,
                Next = res.NextPageStart.ToString(),
            });
        }
Example #4
0
        public async Task <Comment> AddPullRequestComment(string repositoryName, string ownerName, long id, string content, long?lineFrom = null, long?lineTo = null, string fileName = null, long?parentId = null)
        {
            var url     = EnterpriseApiUrls.PullRequestComments(ownerName, repositoryName, id);
            var request = new BitbucketRestRequest(url, Method.POST);


            var body = new EnterpriseComment()
            {
                Text   = content,
                Parent = parentId.HasValue ? new EnterpriseParent()
                {
                    Id = parentId.Value
                } : null,
                Anchor = fileName != null
                    ? new EnterpriseAnchor()
                {
                    Line       = lineFrom ?? lineTo,
                    FileType   = lineFrom != null && lineTo != null ? (FileDiffType?)null : lineFrom != null ? FileDiffType.From : FileDiffType.To,
                    Path       = fileName,
                    SourcePath = fileName,
                    LineType   = lineFrom != null && lineTo != null ? "CONTEXT" : lineFrom != null ? "REMOVED" : "ADDED",
                } : null
            };

            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>());
        }
Example #5
0
        private async Task <string> GetAllLines(string url) //todo temporary for test
        {
            var result = new EnterpriseBrowsePage()
            {
                Lines = new List <EnterpriseBrowseText>()
            };
            IRestResponse <EnterpriseBrowsePage> response;
            ulong pageNumber = 0;

            do
            {
                var request = new BitbucketRestRequest(url, Method.GET);
                request.AddQueryParameter("start", pageNumber.ToString());

                response = await RestClient.ExecuteTaskAsync <EnterpriseBrowsePage>(request);

                if (response.Data?.Lines == null)
                {
                    break;
                }

                result.Lines.AddRange(response.Data.Lines);

                pageNumber += response.Data.Size.Value;
            } while (response.Data?.IsLastPage == false);

            return(string.Join(Environment.NewLine, result.Lines.Select(x => x.Text)));
        }
Example #6
0
        public async Task <IEnumerable <Repository> > GetUserRepositoriesV1()
        {
            var repositories = new List <Repository>();
            var url          = ApiUrls.RepositoriesV1();
            var request      = new BitbucketRestRequest(url, Method.GET);
            var response     = await _versionOneClient.ExecuteTaskAsync <List <RepositoryV1> >(request);

            if (response.Data != null)
            {
                foreach (var repositoryV1 in response.Data)
                {
                    var repo = repositoryV1.MapTo <Repository>();
                    repo.Links = new Links
                    {
                        Clone =
                            new List <Link>()
                        {
                            new Link()
                            {
                                Href = $"{Connection.MainUrl.Scheme}://{Connection.Credentials.Login}@{Connection.MainUrl.Host}/{repositoryV1.Owner}/{repositoryV1.Slug}.git"
                            }
                        }
                    };
                    repositories.Add(repo);
                }
            }


            return(repositories);
        }
        public async Task <Comment> AddPullRequestComment(string repositoryName, string ownerName, long id, string content, long?lineFrom = null, long?lineTo = null, string fileName = null, long?parentId = null)
        {
            var url     = ApiUrls.PullRequestComments(ownerName, repositoryName, id);
            var request = new BitbucketRestRequest(url, Method.POST);

            var body = new Comment()
            {
                Content = new Content()
                {
                    Raw = content
                },
                Inline = fileName != null ? new Inline()
                {
                    From = parentId != null ? null : lineFrom,
                    To   = parentId != null ? null : lineTo,
                    Path = fileName
                } : null,
                Parent = parentId.HasValue ? new Parent()
                {
                    Id = parentId.Value
                } : null
            };

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(body), ParameterType.RequestBody);

            var response = await RestClient.ExecuteTaskAsync <Comment>(request);

            return(response.Data);
        }
Example #8
0
        public async Task <PullRequest> GetPullRequest(string repositoryName, string owner, long id)
        {
            var url         = EnterpriseApiUrls.PullRequest(owner, repositoryName, id);
            var request     = new BitbucketRestRequest(url, Method.GET);
            var pullRequest = await RestClient.ExecuteTaskAsync <EnterprisePullRequest>(request);

            return(pullRequest.Data.MapTo <PullRequest>());
        }
Example #9
0
        public async Task MergePullRequest(string repositoryName, string ownerName, MergeRequest mergeRequest)
        {
            var url     = ApiUrls.PullRequestMerge(ownerName, repositoryName, mergeRequest.Id);
            var request = new BitbucketRestRequest(url, Method.POST);

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(mergeRequest), ParameterType.RequestBody);
            await RestClient.ExecuteTaskAsync(request);
        }
Example #10
0
        public async Task <Commit> GetCommitById(string repoName, string owner, string id)
        {
            var url      = ApiUrls.Commit(owner, repoName, id);
            var request  = new BitbucketRestRequest(url, Method.GET);
            var response = await RestClient.ExecuteTaskAsync <Commit>(request);

            return(response.Data);
        }
Example #11
0
        public async Task <string> GetFileContent(string repoName, string owner, string hash, string path)
        {
            var url      = ApiUrls.DownloadFile(owner, repoName, hash, path);
            var request  = new BitbucketRestRequest(url, Method.GET);
            var response = await _versionOneClient.ExecuteTaskAsync(request);

            return(response.Content);
        }
Example #12
0
        public async Task <PullRequest> GetPullRequest(string repositoryName, string owner, long id)
        {
            var url      = ApiUrls.PullRequest(owner, repositoryName, id);
            var request  = new BitbucketRestRequest(url, Method.GET);
            var response = await RestClient.ExecuteTaskAsync <PullRequest>(request);

            return(response.Data);
        }
Example #13
0
        public async Task <User> GetUser()
        {
            var url      = ApiUrls.User();
            var request  = new BitbucketRestRequest(url, Method.GET);
            var response = await RestClient.ExecuteTaskAsync <User>(request);

            return(response.Data);
        }
Example #14
0
        private async Task <DefaultBranch> DefaultBranch(string repoName, string owner)
        {
            var url      = ApiUrls.DefaultBranch(owner, repoName);
            var request  = new BitbucketRestRequest(url, Method.GET);
            var response = await _versionOneClient.ExecuteTaskAsync <DefaultBranch>(request);

            return(response.Data);
        }
Example #15
0
        public async Task <IEnumerable <FileDiff> > GetPullRequestDiff(string repositoryName, string owner, long id)
        {
            var url      = ApiUrls.PullRequestDiff(owner, repositoryName, id);
            var request  = new BitbucketRestRequest(url, Method.GET);
            var response = await RestClient.ExecuteTaskAsync(request);

            return(DiffFileParser.Parse(response.Content));
        }
Example #16
0
        public async Task <Participant> ApprovePullRequest(string repositoryName, string ownerName, long id)
        {
            var url      = ApiUrls.PullRequestApprove(ownerName, repositoryName, id);
            var request  = new BitbucketRestRequest(url, Method.POST);
            var response = await RestClient.ExecuteTaskAsync <Participant>(request);

            return(response.Data);
        }
        private async Task <DefaultBranch> DefaultBranch(string repoName, string owner)
        {
            var url     = ApiUrls.DefaultBranch(owner, repoName);
            var request = new BitbucketRestRequest(url, Method.GET);

            throw new NotSupportedException("Deprecated");
            //     var response = await _versionOneClient.ExecuteTaskAsync<DefaultBranch>(request);
            //  return response.Data;
        }
        public async Task <User> GetUser(string login)
        {
            var url     = EnterpriseApiUrls.Users(login);
            var request = new BitbucketRestRequest(url, Method.GET);

            var response = await RestClient.ExecuteTaskAsync <EnterpriseUser>(request);

            return(response.Data.MapTo <User>());
        }
        public async Task <Repository> CreateRepository(Repository repository)
        {
            var url     = ApiUrls.Repository(Connection.Credentials.Login, repository.Name);
            var request = new BitbucketRestRequest(url, Method.POST);

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(repository), ParameterType.RequestBody);
            var response = await RestClient.ExecuteTaskAsync <Repository>(request);

            return(response.Data);
        }
Example #20
0
        public async Task <IEnumerable <FileDiff> > GetPullRequestDiff(string repositoryName, string owner, long id)
        {
            var url     = EnterpriseApiUrls.PullRequestDiff(owner, repositoryName, id);
            var request = new BitbucketRestRequest(url, Method.GET);

            var response = await RestClient.ExecuteTaskAsync <EnterpriseDiffResponse>(request);

            var fileDiffs = ParseFileDiffs(response);

            return(fileDiffs);
        }
Example #21
0
        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 BitbucketRestRequest(url, Method.POST);

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest.MapTo <EnterprisePullRequest>()), ParameterType.RequestBody);
            await RestClient.ExecuteTaskAsync(request);
        }
Example #22
0
        public async Task UpdatePullRequest(PullRequest pullRequest, string repoName, string owner)
        {
            pullRequest.Author = new User()
            {
                Username = Connection.Credentials.Login
            };

            var url     = ApiUrls.PullRequest(owner, repoName, pullRequest.Id);
            var request = new BitbucketRestRequest(url, Method.PUT);

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest), ParameterType.RequestBody);
            var response = await RestClient.ExecuteTaskAsync <PullRequest>(request);
        }
Example #23
0
        public async Task <IEnumerable <FileDiff> > GetCommitsDiff(string repoName, string owner, string fromCommit, string toCommit)
        {
            if (fromCommit == toCommit) //otherwise it produces diff against its parent
            {
                return(Enumerable.Empty <FileDiff>());
            }

            var url      = ApiUrls.CommitsDiff(owner, repoName, fromCommit, toCommit);
            var request  = new BitbucketRestRequest(url, Method.GET);
            var response = await RestClient.ExecuteTaskAsync(request);

            return(DiffFileParser.Parse(response.Content));
        }
        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>());
        }
Example #25
0
        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 BitbucketRestRequest(url, Method.PUT);

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest.MapTo <EnterprisePullRequest>()), ParameterType.RequestBody);
            await RestClient.ExecuteTaskAsync(request);
        }
Example #26
0
        public async Task <Comment> EditPullRequestComment(string repositoryName, string ownerName, long pullRequestId, long id, string content, long commentVersion)
        {
            var url     = ApiUrls.PullRequestCommentV1(ownerName, repositoryName, pullRequestId, id);
            var request = new BitbucketRestRequest(url, Method.PUT);

            var body = new CommentV1()
            {
                Content = content
            };

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(body), ParameterType.RequestBody);

            var response = await _versionOneClient.ExecuteTaskAsync <CommentV1>(request);

            return(response.Data.MapTo <Comment>());
        }
        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()
            {
                Uuid = x.Uuid
            }).ToList();

            var url     = ApiUrls.PullRequests(owner, repositoryName);
            var request = new BitbucketRestRequest(url, Method.POST);

            request.AddParameter("application/json; charset=utf-8", request.JsonSerializer.Serialize(pullRequest), ParameterType.RequestBody);
            var response = await RestClient.ExecuteTaskAsync <PullRequest>(request);
        }
Example #28
0
        public async Task <IEnumerable <UserShort> > GetRepositoryUsers(string repositoryName, string ownerName, string filter)
        {
            var url   = ApiUrls.Mentions(ownerName, repositoryName);
            var query = new QueryString()
            {
                { "term", filter }
            };

            var request = new BitbucketRestRequest(url, Method.GET);

            foreach (var par in query)
            {
                request.AddQueryParameter(par.Key, par.Value);
            }

            var response = await _webClient.ExecuteTaskAsync <List <UserShort> >(request);

            return(response.Data);
        }
Example #29
0
        public async Task <IteratorBasedPage <PullRequest> > GetPullRequestsPage(string repositoryName, string ownerName, int page, int limit = 50,
                                                                                 IPullRequestQueryBuilder builder = null)
        {
            var url     = ApiUrls.PullRequests(ownerName, repositoryName);
            var request = new BitbucketRestRequest(url, Method.GET);

            if (builder != null)
            {
                foreach (var param in builder.GetQueryParameters())
                {
                    request.AddQueryParameter(param.Key, param.Value);
                }
            }

            request.AddQueryParameter("pagelen", limit.ToString()).AddQueryParameter("page", page.ToString());

            var response = await RestClient.ExecuteTaskAsync <IteratorBasedPage <PullRequest> >(request);

            return(response.Data);
        }
Example #30
0
        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 BitbucketRestRequest(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);
        }