/// <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); } }
/// <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); } }