示例#1
0
 private bool DoneFetching(int count, ConnectionArguments args)
 {
     if (args.After != null || args.Before != null || args.Last != null || args.First == null)
     {
         return(false);
     }
     return(count >= args.First.Value);
 }
示例#2
0
        public async Task <List <T> > GetConnection <T>(ConnectionArguments args)
            where T : Entity
        {
            var nextUrl      = new Uri($"{_apiBase}/{typeof(T).Name.ToLower()}");
            var entities     = new List <T>();
            var canStopEarly =
                args.After != null ||
                args.Before != null ||
                args.Last != null ||
                args.First == null;

            EntityList <T> page;

            while (nextUrl != null && !DoneFetching(entities.Count, args))
            {
                page = await Fetch <EntityList <T> >(nextUrl);

                entities.AddRange(page.Results);
                nextUrl = page.Next;
            }

            return(entities);
        }