public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { if (actionExecutedContext == null) { throw new ArgumentNullException("actionExecutedContext"); } HttpRequestMessage request = actionExecutedContext.Request; if (request == null) { throw new InvalidOperationException(TResources.ParameterNull.FormatForUser("Request")); } HttpResponseMessage response = actionExecutedContext.Response; if (response == null) { return; } long? count = request.ODataProperties().TotalCount; IQueryable queryableResults = null; if (count.HasValue && response.TryGetContentValue(out queryableResults)) { // Client has requested an inline count, so the actual response content will contain // the query results as well as the count. Create a new ObjectContent for the query results. QueryResult queryResult = new QueryResult(queryableResults, count); MediaTypeFormatter formatter = ((ObjectContent)response.Content).Formatter; response.Content = new ObjectContent<QueryResult>(queryResult, formatter); } AddETagResponseHeader(response); Uri nextAddr = request.ODataProperties().NextLink; if (nextAddr != null) { LinkHeaderValue nextLink = new LinkHeaderValue(nextAddr) { Rel = "next" }; response.Headers.Add("Link", nextLink.ToString()); } }
public QueryResultTests() { this.count = Int64.MaxValue; this.results = new List<int>() { 1, 2, 3 }; this.queryResult = new QueryResult(this.results, this.count); }