private static SearchResultPager GetSearchResultPager(IncomingWebRequestContext context, int pageSize, string token) { SearchResultPager p; if (token == null) { string filter = WebResponseHelper.GetFilterText(context); CultureInfo locale = WebResponseHelper.GetLocale(); IEnumerable <string> attributes = WebResponseHelper.GetAttributes(context); if (attributes != null) { p = Global.Client.GetResourcesPaged(filter, pageSize, attributes, locale); } else { p = Global.Client.GetResourcesPaged(filter, pageSize, locale); } } else { p = (SearchResultPager)ResourceManagementWebServicev2.searchCache.Remove(ResourceManagementWebServicev2.BuildCacheKey(token)); if (p == null) { throw new ArgumentException("Invalid token"); } } return(p); }
public Stream GetResourcesPaged() { try { IncomingWebRequestContext context = WebOperationContext.Current?.IncomingRequest; if (context == null) { throw new InvalidOperationException(); } string currentIndexParam = context.UriTemplateMatch.QueryParameters["index"]; string token = context.UriTemplateMatch.QueryParameters["token"]; int pageSize = WebResponseHelper.GetPageSize(context); int index = currentIndexParam == null ? -1 : Convert.ToInt32(currentIndexParam); SearchResultPager p = ResourceManagementWebServicev2.GetSearchResultPager(context, pageSize, token); token = token ?? Guid.NewGuid().ToString(); if (index >= 0) { p.CurrentIndex = index; } p.PageSize = pageSize; int oldIndex = p.CurrentIndex; PagedResultSet results = new PagedResultSet { Results = p.GetNextPage().ToList(), }; ResourceManagementWebServicev2.GetPageUris(context, oldIndex, pageSize, token, p, out Uri previousPageUri, out Uri nextPageUri); results.NextPage = nextPageUri?.ToString(); results.PreviousPage = previousPageUri?.ToString(); results.TotalCount = p.TotalCount; results.HasMoreItems = results.NextPage != null; ResourceManagementWebServicev2.searchCache.Add(ResourceManagementWebServicev2.BuildCacheKey(token), p, new CacheItemPolicy() { SlidingExpiration = new TimeSpan(0, 5, 0) }); return(WebResponseHelper.GetResponse(results, false)); } catch (WebFaultException) { throw; } catch (WebFaultException <Error> ) { throw; } catch (Exception ex) { ResourceManagementWebServicev2.HandleException(ex); throw; } }