Beispiel #1
0
        protected override async Task OnExecute(CommandLineApplication app)
        {
            var connection = CreateConnection();

            var orderBy = new IssueOrder {
                Field = IssueOrderField.CreatedAt, Direction = OrderDirection.Desc
            };
            var states = new[] { IssueState.Open };
            var query  = new Query()
                         .Viewer
                         .Issues(first: 100, orderBy: orderBy, states: states)
                         .Nodes
                         .Select(pr => new { pr.Repository.NameWithOwner, pr.Title, pr.Number, pr.Author.Login, pr.CreatedAt })
                         .Compile();

            var result = await connection.Run(query);

            foreach (var pr in result)
            {
                Console.WriteLine(
                    @$ "{pr.NameWithOwner} - {pr.Title}
#{pr.Number} opened on {pr.CreatedAt:D} by {pr.Login}
");
            }
        }
Beispiel #2
0
        static async Task <IList <IssueModel> > GetIssues(Connection connection, string owner, string name)
        {
            var order = new IssueOrder
            {
                Field     = IssueOrderField.CreatedAt,
                Direction = OrderDirection.Asc,
            };

            var query = new Query()
                        .Repository(owner: owner, name: name)
                        .Issues(first: 30, labels: Labels, states: new[] { IssueState.Open })
                        .Nodes
                        .Select(y => new IssueModel
            {
                Url       = y.Url,
                Number    = y.Number,
                Title     = y.Title,
                Body      = y.Body,
                CreatedAt = y.CreatedAt,
                Labels    = y.Labels(30, null, null, null).Nodes.Select(z => z.Name).ToList(),
                Comments  = y.Comments(100, null, null, null).Nodes.Select(c => new CommentModel
                {
                    BodyHTML    = c.BodyHTML,
                    Id          = c.Id.Value,
                    PublishedAt = c.PublishedAt,
                    AuthorLogin = c.Author.Login,
                    AvatarUrl   = c.Author.AvatarUrl(160)
                }).ToList()
            });

            return((await connection.Run(query))
                   .ToList());
        }
Beispiel #3
0
        static async Task <IList <IssueModel> > GetIssues(Connection connection, DateTimeOffset after)
        {
            string cursor = null;
            var    result = new List <IssueModel>();

            var order = new IssueOrder
            {
                Field     = IssueOrderField.CreatedAt,
                Direction = OrderDirection.Asc,
            };

            do
            {
                var query = new Query()
                            .Repository(owner: "github", name: "VisualStudio")
                            .Issues(first: 30, after: cursor, labels: Labels, states: new[] { IssueState.Closed })
                            .Select(x => new
                {
                    x.PageInfo.EndCursor,
                    x.PageInfo.HasNextPage,
                    Issues = x.Nodes.Select(y => new IssueModel
                    {
                        Number   = y.Number,
                        Title    = y.Title,
                        ClosedAt = y.ClosedAt,
                        Labels   = y.Labels(30, null, null, null).Nodes.Select(z => z.Name).ToList(),
                    }).ToList(),
                });

                var page = await connection.Run(query);

                foreach (var issue in page.Issues)
                {
                    if (issue.ClosedAt > after)
                    {
                        result.Add(issue);
                    }
                }

                if (page.HasNextPage)
                {
                    cursor = page.EndCursor;
                }
                else
                {
                    return(result);
                }
            } while (true);
        }