public override async Task <IEnumerable <IIssueTrackerIssue> > EnumerateIssuesAsync(IIssueSourceEnumerationContext context) { var credentials = this.TryGetCredentials <GitLabCredentials>(); if (credentials == null) { throw new InvalidOperationException("Credentials must be supplied to enumerate GitLab issues."); } string projectName = AH.CoalesceString(this.ProjectName, credentials.ProjectName); if (string.IsNullOrEmpty(projectName)) { throw new InvalidOperationException("A project name must be defined in either the issue source or associated GitLab credentials in order to enumerate GitLab issues."); } var client = new GitLabClient(credentials.ApiUrl, credentials.UserName, credentials.Password, credentials.GroupName); var filter = new GitLabIssueFilter { Milestone = this.MilestoneTitle, Labels = this.Labels, CustomFilterQueryString = this.CustomFilterQueryString }; var issues = await client.GetIssuesAsync(projectName, filter, CancellationToken.None).ConfigureAwait(false); return(from i in issues select new GitLabIssue(i)); }