Exemplo n.º 1
0
        public Source GetChangeSet(SonarRequestGetChangeSet sonarRequestGetChangeSet)
        {
            if (sonarRequestGetChangeSet == null || _sonarSettings == null)
            {
                return(null);
            }

            try
            {
                string cacheKey   = string.Format("GetChangesetRespByComponent_{0}", sonarRequestGetChangeSet.Component);
                var    listIssues = _cacheManager.Resolve(cacheKey, async() =>
                {
                    return(await GetSourceFromSonar(sonarRequestGetChangeSet));
                });

                if (sonarRequestGetChangeSet.Line == default(int))
                {
                    return(listIssues.GetAwaiter().GetResult()?.Where(_ => _.AuthorEmail == sonarRequestGetChangeSet.AuthorEmail)
                           ?.MinBy(_ => Math.Abs((_.CreationDate - sonarRequestGetChangeSet.IssueDate).Ticks)));
                }
                else
                {
                    return(listIssues.GetAwaiter().GetResult()?.FirstOrDefault(_ => _.Line == sonarRequestGetChangeSet.Line));
                }
            }
            catch (Exception ex)
            {
                _loggingService.LogError(sonarRequestGetChangeSet, "", ex);
                return(null);
            }
        }
Exemplo n.º 2
0
        private async Task <List <Source> > GetSourceFromSonar(SonarRequestGetChangeSet sonarRequestGetChangeSet)
        {
            try
            {
                if (sonarRequestGetChangeSet == null || _sonarSettings == null)
                {
                    return(new List <Source>());
                }

                List <KeyValuePair <string, string> > args = new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("key", sonarRequestGetChangeSet.Component)
                };

                LinesResponse responseLines = await _httpApiClient.PostAsync <LinesResponse>(args, _sonarSettings.Uri_GetChangeSet, _sonarSettings.Token);

                List <Source> res = new List <Source>();
                if (responseLines?.sources != null)
                {
                    foreach (var item in responseLines.sources)
                    {
                        res.Add(new Source()
                        {
                            ChangeSet = item.ChangeSet, Line = item.Line, AuthorEmail = item.Author, CreationDate = item.CreationDate
                        });
                    }
                }
                return(res);
            }
            catch
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Call the SonarConnector and get the <see cref="Source"/> corresponding to the actual issue informations.
        /// </summary>
        /// <param name="sonarRequestGetChangeSet">The Issue informations used to detect the ChangeSet.</param>
        /// <param name="sonarConnector"></param>
        /// <returns>The <see cref="Source"/> containing the ChangeSet id, it's Date, ...</returns>
        private static Source GetChangeSetAsync(this Issue issue, ISonarConnector sonarConnector)
        {
            if (issue == null)
            {
                return(null);
            }

            SonarRequestGetChangeSet sonarRequestGetChangeSet = new SonarRequestGetChangeSet()
            {
                AuthorEmail = issue.IssueDetail.author,
                IssueDate   = issue.IssueDetail.creationDate,
                Component   = issue.IssueDetail.component,
                Line        = issue.IssueDetail.line
            };

            return(sonarConnector.GetChangeSet(sonarRequestGetChangeSet));
        }