public IMultiLevelCursorIterator <long, IUser> CreateUserMultiLevelIterator(
     ITwitterClient client,
     ITwitterPageIterator <ITwitterResult <IIdsCursorQueryResultDTO> > iterator,
     int maxPageSize)
 {
     return(Create(iterator, dtoIds => dtoIds.Ids, client.Users.GetUsers, maxPageSize));
 }
        public IMultiLevelCursorIterator <TInput, TOutput> Create <TDTO, TInput, TOutput>(
            ITwitterPageIterator <ITwitterResult <TDTO> > pageIterator,
            Func <TDTO, TInput[]> transform,
            Func <TInput[], Task <TOutput[]> > getChildItems,
            int maxPageSize)
        {
            var iterator = new MultiLevelCursorIterator <TInput, TOutput>(
                async() =>
            {
                var userIdsPage = await pageIterator.NextPage().ConfigureAwait(false);

                return(new CursorPageResult <TInput, string>
                {
                    Items = transform(userIdsPage.Content.DataTransferObject),
                    NextCursor = userIdsPage.NextCursor,
                    IsLastPage = userIdsPage.IsLastPage
                });
            }, async inputs =>
            {
                var userIdsToAnalyze = inputs.Take(maxPageSize).ToArray();
                var friends          = await getChildItems(userIdsToAnalyze).ConfigureAwait(false);

                return(new MultiLevelPageProcessingResult <TInput, TOutput>
                {
                    Items = friends,
                    AssociatedParentItems = userIdsToAnalyze,
                });
            });

            return(iterator);
        }
Beispiel #3
0
 public TwitterIteratorTestRunner(
     ITwitterPageIterator <ITwitterResult <TDTO>, TCursor> iterator,
     ITwitterResult <TDTO>[] results)
 {
     _iterator = iterator;
     _results  = results;
 }
 public TwitterUsersIteratorTestRunner(ITwitterPageIterator <ITwitterResult <IUserCursorQueryResultDTO>, string> iterator) : base(iterator)
 {
 }
 public TwitterIdsIteratorTestRunner(ITwitterPageIterator <ITwitterResult <IIdsCursorQueryResultDTO> > iterator) : base(iterator)
 {
 }
Beispiel #6
0
 public TwitterIteratorProxy(ITwitterPageIterator <TInput, string> source, Func <TInput, TOutput[]> transform) : base(source, transform)
 {
 }
Beispiel #7
0
 public TwitterIteratorTestRunner(ITwitterPageIterator <ITwitterResult <TDTO>, TCursor> iterator)
 {
     _iterator = iterator;
 }
Beispiel #8
0
 public IteratorPageProxy(ITwitterPageIterator <TInput, TCursor> source, Func <TInput, TOutput> transform)
 {
     _source    = source;
     _transform = transform;
 }