public async Task <ActionResult <IReadOnlyCollection <BuildInfoDto> > > GetAsync() { try { var builds = await _buildProvider.GetBuildsAsync(); return(Ok(_mapper.Map <IReadOnlyCollection <BuildInfoDto> >(builds))); } catch (Exception ex) { _logger.LogError(ex, "Error in BuildsController"); return(StatusCode(500, ex.Message)); } }
private async Task <IEnumerable <IBuild> > PollBuildsAsync(IBuildProvider provider, BuildMonitorSettings settings) { try { if (this.generalSettings?.ViewStyle == BuildViewStyle.GroupByPullRequest) { var prBuilds = await provider.GetBuildsByPullRequestsAsync(settings).ConfigureAwait(false); prBuilds.ThrowIfUnsuccessful(); var definitionsInUse = prBuilds.Data.GroupBy(a => a.Definition, build => build, this.buildDefinitionEqualityComparer).Select(a => a.Key); var unusedDefinitions = settings.SelectedBuildDefinitions.Except(definitionsInUse, this.buildDefinitionEqualityComparer).ToList(); if (unusedDefinitions.Any()) { var defBuilds = await provider.GetBuildsAsync(settings.SelectedBuildDefinitions, settings).ConfigureAwait(false); defBuilds.ThrowIfUnsuccessful(); return(prBuilds.Data.Concat(defBuilds.Data)); } return(prBuilds.Data); } var builds = await provider.GetBuildsAsync(settings.SelectedBuildDefinitions, settings).ConfigureAwait(false); builds.ThrowIfUnsuccessful(); return(builds.Data); } catch (DataResponseUnsuccessfulException ex) { this.logger.Warn($"Http status code {ex.StatusCode} returned while polling for builds!"); this.notificationProvider?.ShowMessage("Failure on getting builds", $"Please check the connection for project(s) '{String.Join(", ", settings.SelectedBuildDefinitions.Select(b => b.Project.Name).Distinct())}'. StatusCode was '{ex.StatusCode}'. See log for more details."); } catch (Exception exception) { this.logger.Warn("Failure on polling builds", exception); this.notificationProvider?.ShowMessage("Failure on getting builds", $"Please check the connection for project(s) '{String.Join(", ", settings.SelectedBuildDefinitions.Select(b => b.Project.Name).Distinct())}'. See log for details."); } return(Enumerable.Empty <IBuild>()); }