Пример #1
0
        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>());
        }