private async Task <IEnumerable <IFile> > ReadAsync() { List <GitHubFile> files = new List <GitHubFile>(); var client = new GitHubClient(new ProductHeaderValue(_project)); var basicAuth = new Credentials(_user, _password); client.Credentials = basicAuth; var commits = (await client.Repository.Commits.GetAll(_owner, _project)).ToList(); foreach (var item in commits) { var commit = await client.Repository.Commits.Get(_owner, _project, item.Sha); foreach (var fileItem in commit.Files) { GitHubFile file = files.FirstOrDefault(x => x.Path == fileItem.Filename); if (file == null) { file = new GitHubFile() { Sha = fileItem.Sha, Path = fileItem.Filename, RawDataUrl = fileItem.RawUrl, }; files.Add(file); } file.Changes.Add(new Change { AddedLines = fileItem.Additions, DeletedLines = fileItem.Deletions, TotalChanges = fileItem.Changes, ChangeType = fileItem.Status, Date = commit.Commit.Committer.Date }); } } files.ForEach(x => x.Date = x.Changes.Min(y => y.Date).Date); return(files.Cast <IFile>()); }
private async Task<IEnumerable<IFile>> ReadAsync() { List<GitHubFile> files = new List<GitHubFile>(); var client = new GitHubClient(new ProductHeaderValue(_project)); var basicAuth = new Credentials(_user, _password); client.Credentials = basicAuth; var commits = (await client.Repository.Commits.GetAll(_owner, _project)).ToList(); foreach (var item in commits) { var commit = await client.Repository.Commits.Get(_owner, _project, item.Sha); foreach (var fileItem in commit.Files) { GitHubFile file = files.FirstOrDefault(x => x.Path == fileItem.Filename); if (file == null) { file = new GitHubFile() { Sha = fileItem.Sha, Path = fileItem.Filename, RawDataUrl = fileItem.RawUrl, }; files.Add(file); } file.Changes.Add( new Change { AddedLines = fileItem.Additions, DeletedLines = fileItem.Deletions, TotalChanges = fileItem.Changes, ChangeType = fileItem.Status, Date = commit.Commit.Committer.Date }); } } files.ForEach(x => x.Date = x.Changes.Min(y => y.Date).Date); return files.Cast<IFile>(); }