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); }
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); }
public GetMergeRequestsOptionsBuilder() { options = new GetMergeRequestsOptions(); }