def getAllActivities(self) -> ActivityList: """ Get all activities for the user, for all time. Keep walking back page-by-page until it looks like we have everything return: ActivityList """ page = 1 done = False out = ActivityList() while (not done): activities = self.getActivitiesPage(page, self.MAX_PAGE_SIZE) for activity in activities: try: out.append(Activity.newFromDict(activity)) except ValueError as e: self.log.warning("Activity missing required field: %s" % e) page = page + 1 if (len(activities) < self.MAX_PAGE_SIZE): self.log.debug( "Asked for %d got %d. Assuming all activities are fetched" % (self.MAX_PAGE_SIZE, len(activities))) done = True return out
def getActivities(self, num: int, offset: int = 0) -> ActivityList: orig_num = num if (num > self.MAX_PAGE_SIZE): remaining = num - self.MAX_PAGE_SIZE num = self.MAX_PAGE_SIZE else: remaining = 0 out = ActivityList() while (remaining >= 0): self.log.debug( "pagination parameters are: num=%s offset=%s remaining=%s" % (num, offset, remaining)) page = math.floor(offset / num) + 1 activities = self.getActivitiesPage(page, num) for activity in activities: try: out.append(Activity.newFromDict(activity)) except ValueError as e: self.log.warning("Activity missing required field: %s" % e) offset += num remaining = orig_num - offset num = self.MAX_PAGE_SIZE out = out.sortByDate(True) if (len(out) > orig_num): return ActivityList.slice(out, 0, orig_num) return out