Exemplo n.º 1
0
        /// <summary>
        /// Returns the total number of lines and the total number of bytes of all files in the public Github repository, by file extension.
        /// </summary>
        /// <param name="user">Github user</param>
        /// <param name="repo">Github repository</param>
        /// <returns>Listing by file extension with the number of lines and total bytes.</returns>
        public List <WebScrapingResult> GetGitHub(string user, string repository)
        {
            var files = new List <FileContent>();

            try
            {
                AnalyzesContent($"https://github.com/{user}/{repository}", $"https://github.com", files);

                var result = files.Where(x => x.Type == "file")
                             .GroupBy(x => x.Extension)
                             .Select(x => new WebScrapingResult
                {
                    FileExtension = x.Key,
                    Size          = x.Sum(y => ConvertToBytes(y)),
                    NumberOfLines = x.Sum(y => y.NumberOfLines),
                    Result        = "Success"
                });

                return(result.OrderBy(x => x.FileExtension).ToList());
            }
            catch (Exception ex)
            {
                var result            = new List <WebScrapingResult>();
                WebScrapingResult wsr = new WebScrapingResult();
                wsr.Result = "An error occurred while trying to extract information from Github. If the error persists, contact your system administrator. ERROR: " + ex.Message;
                result.Add(wsr);
                return(result);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns the total number of lines and the total number of bytes of all files in the public Github repository, by file extension.
        /// </summary>
        /// <param name="user">Github user</param>
        /// <param name="repo">Github repository</param>
        /// <returns>Listing by file extension with the number of lines and total bytes.</returns>
        public List <WebScrapingResult> GetGitHub(string user, string repository)
        {
            var files = new List <FileContent>();

            try
            {
                string   resultGitHub = string.Empty;
                string   CommitToken  = string.Empty;
                DateTime LastCommit   = DateTime.MinValue;
                ReturnsLastCommit($"https://github.com/{user}/{repository}", $"https://github.com", out CommitToken, out LastCommit);
                GitHubResult gitHubResultSave = _gitHubResultService.SearchByTokenAndLastCommit(CommitToken, LastCommit);

                if (gitHubResultSave != null)
                {
                    if (LastCommit > gitHubResultSave.LastCommit || LastCommit == DateTime.MinValue)
                    {
                        AnalyzesContent($"https://github.com/{user}/{repository}", $"https://github.com", files);

                        var result = files.Where(x => x.Type == "file")
                                     .GroupBy(x => x.Extension)
                                     .Select(x => new WebScrapingResult
                        {
                            FileExtension = x.Key,
                            Size          = x.Sum(y => ConvertToBytes(y)),
                            NumberOfLines = x.Sum(y => y.NumberOfLines),
                            Result        = "Success"
                        });

                        List <WebScrapingResult> lst = result.OrderBy(x => x.FileExtension).ToList();
                        resultGitHub = Serialize <List <WebScrapingResult> >(lst);

                        GitHubResult gitHubResult = new GitHubResult
                        {
                            CommitToken      = CommitToken,
                            LastCommit       = LastCommit,
                            RepositoryGitHub = repository,
                            UserGitHub       = user,
                            ResultGitHub     = resultGitHub
                        };

                        _gitHubResultService.Add(gitHubResult);
                    }
                    else
                    {
                        resultGitHub = gitHubResultSave.ResultGitHub;
                    }
                }
                else
                {
                    AnalyzesContent($"https://github.com/{user}/{repository}", $"https://github.com", files);

                    var result = files.Where(x => x.Type == "file")
                                 .GroupBy(x => x.Extension)
                                 .Select(x => new WebScrapingResult
                    {
                        FileExtension = x.Key,
                        Size          = x.Sum(y => ConvertToBytes(y)),
                        NumberOfLines = x.Sum(y => y.NumberOfLines),
                        Result        = "Success"
                    });

                    List <WebScrapingResult> lst = result.OrderBy(x => x.FileExtension).ToList();
                    resultGitHub = Serialize <List <WebScrapingResult> >(lst);

                    GitHubResult gitHubResult = new GitHubResult
                    {
                        CommitToken      = CommitToken,
                        LastCommit       = LastCommit,
                        RepositoryGitHub = repository,
                        UserGitHub       = user,
                        ResultGitHub     = resultGitHub
                    };

                    _gitHubResultService.Add(gitHubResult);
                }

                List <WebScrapingResult> values = DeSerialize <List <WebScrapingResult> >(resultGitHub);
                return(values);
            }
            catch (Exception ex)
            {
                var result            = new List <WebScrapingResult>();
                WebScrapingResult wsr = new WebScrapingResult();
                wsr.Result = "An error occurred while trying to extract information from Github. If the error persists, contact your system administrator. ERROR: " + ex.Message;
                result.Add(wsr);
                return(result);
            }
        }