コード例 #1
0
        public static bool MatchesOptions(this MergeRequestInfo mergeRequest, GetMergeRequestsOptions mergeRequestsOptions)
        {
            if (mergeRequestsOptions.ExcludingProjectIds != null)
            {
                if (mergeRequestsOptions.ExcludingProjectIds.Contains(mergeRequest.ProjectId))
                {
                    return(false);
                }
            }

            if (mergeRequestsOptions.AuthorUsername != null)
            {
                if (mergeRequest.AuthorUsername != mergeRequestsOptions.AuthorUsername)
                {
                    return(false);
                }
            }

            if (mergeRequestsOptions.NotAuthoredBy != null)
            {
                if (mergeRequest.AuthorUsername == mergeRequestsOptions.NotAuthoredBy)
                {
                    return(false);
                }
            }

            if (mergeRequestsOptions.OnlyNotInProgress)
            {
                if (mergeRequest.IsWorkInProgress)
                {
                    return(false);
                }
            }

            if (mergeRequestsOptions.OnlyOpened == true && !mergeRequest.IsOpened)
            {
                return(false);
            }

            if (mergeRequestsOptions.NotUpvotedBy != null)
            {
                if (mergeRequest.UpvotedBy.Contains(mergeRequestsOptions.NotUpvotedBy))
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        private async Task <IList <MergeRequestInfo> > GetMergeRequests(int projectId, GetMergeRequestsOptions options)
        {
            var result = new List <MergeRequestInfo>();

            IList <MergeRequest> mergeRequests = new List <MergeRequest>();

            try
            {
                mergeRequests = await gitLabClient.MergeRequests.GetAsync(projectId);
            }
            catch (JsonSerializationException)
            {
                return(result);
            }

            foreach (var mergeRequest in mergeRequests)
            {
                var emojis = await GetAwardEmojisAsync(projectId, mergeRequest.Iid);

                var mergeRequestInfo = mergeRequest.ToMergeRequestInfo(emojis);

                if (mergeRequestInfo.MatchesOptions(options))
                {
                    result.Add(mergeRequestInfo);
                }
            }

            return(result);
        }
コード例 #3
0
 public GetMergeRequestsOptionsBuilder()
 {
     options = new GetMergeRequestsOptions();
 }