コード例 #1
0
        public ApiPagedList <ApiStory> ToApi()
        {
            ApiPagedList <ApiStory> storiesPage = new ApiPagedList <ApiStory>();

            storiesPage.Items = this.Items.ToApi();
            storiesPage.Total = this.Total;
            return(storiesPage);
        }
コード例 #2
0
        public async Task <IActionResult> NewStories([FromQuery] ApiQueryModel query)
        {
            var newStoryIds = await _storyProvider.GetNewStoryIds();

            if (newStoryIds == null)
            {
                return(BadRequest("Error loading new story list"));
            }

            var pageOffset = (query.Page - 1) * query.PageSize;

            if (pageOffset >= newStoryIds.Count())
            {
                return(BadRequest("Invalid requested range"));
            }

            var pageList = newStoryIds.Skip(pageOffset).Take(query.PageSize);
            var stories  = await _storyProvider.GetNewStories(pageList);

            if (stories == null)
            {
                return(BadRequest("Error pulling new stories"));
            }

            var paginatedResult = pageList.Select(id => stories.GetValueOrDefault(id));
            var currentPage     = query.Page;
            var lastPage        = (int)Math.Ceiling((double)newStoryIds.Count() / query.PageSize);

            var result = new ApiPagedList <Item>(
                paginatedResult,
                currentPage,
                lastPage
                );

            return(Ok(result));
        }