예제 #1
0
        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>());
        }
예제 #2
0
        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>();
        }