Trello.Net: Как получить данные о действиях?

Я могу получить список действий для карты. Тем не менее, карта действий содержит только ограниченную информацию, так как я могу получить к действительному содержанию действия?

var actionList = trello.Actions.ForCard(card);
foreach (TrelloNet.Action action in actionList)

при прохождении каждого действия в списке я вижу только участника, который создал действие, дату, участника и тип действия (например, TrelloNet.UpdateCardAction). Как я могу добраться до фактического контекста действия, например перенес эту карту на борт?

Если это неправильный способ получить актуальную информацию о действии, укажите мне правильный логический путь.

Спасибо,

Chi

1 ответ

Решение

Каждый тип действия является подклассом Action учебный класс. Подклассы имеют свойство под названием Data который содержит конкретную информацию для этого типа действия.

Например, если вы хотите распечатать все действия по созданию карточек для доски, вы можете сделать это следующим образом:

var board = trello.Boards.WithId("a board id");
foreach (var action in trello.Actions.ForBoard(board).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " " + action.Data.Card.Name);
}

Это приведет к извлечению всех действий с доски из trello, а затем отфильтрует их в памяти. По соображениям производительности вы можете указать Trello.NET запрашивать только определенные типы действий, передавая дополнительный параметр, например:

foreach (var action in trello.Actions.ForBoard(board, 
    new[] { ActionType.CreateCard }).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " - " + action.Data.Card.Name);
}

Поскольку может быть много действий, trello использует пейджинг. Вы можете передать Paging Параметр для указания значения индекса страницы и размера страницы. Следующее означает, что каждая страница содержит 100 действий, и вы хотите первую страницу (0).

foreach (var action in trello.Actions.ForBoard(board, 
    new[] { ActionType.CreateCard }, 
    paging: new Paging(100, 0)).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " - " + action.Data.Card.Name);
}

Существует метод расширения под названием AutoPaged() это поможет с подкачкой. Добавить оператор использования...

using TrelloNet.Extensions;

... и использовать AutoPaged(), Trello.NET будет автоматически загружать новые страницы по мере необходимости.

foreach (var action in trello.Actions.AutoPaged().ForBoard(board, 
    new[] { ActionType.CreateCard }).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " - " + action.Data.Card.Name);
}

Примечание: прошло некоторое время с тех пор, как новые типы действий были добавлены в Trello.NET, поэтому могут появиться новые типы, которые не распознаются...

Другие вопросы по тегам