public static int GetMaxPageSize(IDictionary <String, StringValues> requestHeaders) { requestHeaders.TryGetValue("Prefer", out StringValues preferHeader); var headers = OeRequestHeaders.Parse(requestHeaders["Accept"], preferHeader); return(headers.MaxPageSize); }
public virtual async Task ExecuteResultAsync(ActionContext context) { var settings = new ODataMessageWriterSettings() { BaseUri = _odataUri.ServiceRoot, EnableMessageStreamDisposal = false, ODataUri = _odataUri, Validations = ValidationKinds.ThrowIfTypeConflictsWithMetadata | ValidationKinds.ThrowOnDuplicatePropertyNames, Version = ODataVersion.V4 }; var requestHeaders = OeRequestHeaders.Parse(context.HttpContext.Request.Headers["Accept"], context.HttpContext.Request.Headers["Prefer"]); if (requestHeaders.MaxPageSize > 0 && PageSize == 0) { PageSize = requestHeaders.MaxPageSize; } IODataResponseMessage responseMessage = new Infrastructure.OeInMemoryMessage(context.HttpContext.Response.Body, context.HttpContext.Request.ContentType); using (ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, settings, _edmModel)) { ODataUtils.SetHeadersForPayload(messageWriter, ODataPayloadKind.ResourceSet); IEdmEntityType entityType = _resultEntitySet.EntityType(); ODataWriter writer = messageWriter.CreateODataResourceSetWriter(_resultEntitySet, entityType); await SerializeAsync(writer, requestHeaders.MetadataLevel); } }
private static OeRequestHeaders GetRequestHeaders(HttpRequestHeaders requestHeaders, HttpResponse httpResponse) { ((IDictionary <String, StringValues>)requestHeaders).TryGetValue("Prefer", out StringValues preferHeader); var headers = OeRequestHeaders.Parse(requestHeaders.HeaderAccept, preferHeader); return(new OeHttpRequestHeaders(headers, httpResponse)); }
private async Task InvokeApi(HttpContext httpContext) { httpContext.Request.Headers.TryGetValue("Prefer", out StringValues preferHeader); OeRequestHeaders headers = OeRequestHeaders.Parse(httpContext.Request.Headers["Accept"], preferHeader); Uri baseUri = UriHelper.GetBaseUri(httpContext.Request); Uri requestUri = UriHelper.GetUri(httpContext.Request); if (HttpMethods.IsGet(httpContext.Request.Method)) { var parser = new OeParser(baseUri, EdmModel, GetModelBoundProvider(httpContext), OeParser.ServiceProvider); await parser.ExecuteGetAsync(requestUri, new OeHttpRequestHeaders(headers, httpContext.Response), httpContext.Response.Body, httpContext.RequestAborted).ConfigureAwait(false); } else if (HttpMethods.IsPost(httpContext.Request.Method) || HttpMethods.IsPut(httpContext.Request.Method) || HttpMethods.IsPatch(httpContext.Request.Method) || HttpMethods.IsDelete(httpContext.Request.Method)) { ODataUri odataUri = OeParser.ParseUri(EdmModel, baseUri, requestUri, OeParser.ServiceProvider); if (odataUri.Path.LastSegment is OperationImportSegment) { var parser = new OeParser(baseUri, EdmModel, GetModelBoundProvider(httpContext), OeParser.ServiceProvider); await parser.ExecuteOperationAsync(odataUri, new OeHttpRequestHeaders(headers, httpContext.Response), httpContext.Request.Body, httpContext.Response.Body, httpContext.RequestAborted).ConfigureAwait(false); } else { httpContext.Response.ContentType = httpContext.Request.ContentType; var batchParser = new OeBatchParser(baseUri, EdmModel, OeParser.ServiceProvider); await batchParser.ExecuteOperationAsync(requestUri, httpContext.Request.Body, httpContext.Response.Body, httpContext.Request.ContentType, httpContext.Request.Method, httpContext.RequestAborted).ConfigureAwait(false); } } }
public async Task <OdataWcfQuery> Get(OdataWcfQuery request) { OeRequestHeaders headers = OeRequestHeaders.Parse(request.ContentType, request.Prefer); headers.ResponseContentType = headers.ContentType; Query.OeModelBoundProvider modelBoundProvider = null; if (headers.MaxPageSize > 0) { var pageNextLinkModelBoundBuilder = new PageNextLinkModelBoundBuilder(_edmModel, false); modelBoundProvider = pageNextLinkModelBoundBuilder.BuildProvider(headers.MaxPageSize, false); } var parser = new OeParser(_baseUri, _edmModel, modelBoundProvider); String query = new StreamReader(request.Content).ReadToEnd(); var uri = new Uri(_baseUri, new Uri(query, UriKind.Relative)); var responseStream = new MemoryStream(); await parser.ExecuteGetAsync(uri, headers, responseStream, CancellationToken.None); responseStream.Position = 0; return(new OdataWcfQuery() { Content = responseStream, ContentType = headers.ResponseContentType }); }
private async Task InvokeApi(HttpContext httpContext) { httpContext.Request.Headers.TryGetValue("Prefer", out StringValues preferHeader); OeRequestHeaders headers = OeRequestHeaders.Parse(httpContext.Request.Headers["Accept"], preferHeader); var parser = new OeParser(UriHelper.GetBaseUri(httpContext.Request), EdmModel, GetModelBoundProvider(httpContext), OeParser.ServiceProvider); await parser.ExecuteGetAsync(UriHelper.GetUri(httpContext.Request), new OeHttpRequestHeaders(headers, httpContext.Response), httpContext.Response.Body, CancellationToken.None).ConfigureAwait(false); }
private async Task Invoke(HttpContext httpContext, PathString remaining) { var requestHeaders = (HttpRequestHeaders)httpContext.Request.Headers; ((IDictionary <String, StringValues>)requestHeaders).TryGetValue("Prefer", out StringValues preferHeader); OeRequestHeaders headers = OeRequestHeaders.Parse(requestHeaders.HeaderAccept, preferHeader); var parser = new OeParser(UriHelper.GetBaseUri(httpContext.Request), _edmModel); await parser.ExecuteGetAsync(UriHelper.GetUri(httpContext.Request), new OeHttpRequestHeaders(headers, httpContext.Response), httpContext.Response.Body, CancellationToken.None); }
private async Task Invoke(HttpContext httpContext, PathString remaining) { var requestHeaders = (FrameRequestHeaders)httpContext.Request.Headers; httpContext.Response.ContentType = requestHeaders.HeaderAccept; var uri = new Uri(_baseUri.OriginalString + remaining + httpContext.Request.QueryString); OeRequestHeaders headers = OeRequestHeaders.Parse(requestHeaders.HeaderAccept); var parser = new OeParser(_baseUri, _dataAdapter, _edmModel); await parser.ExecuteQueryAsync(uri, headers, httpContext.Response.Body, CancellationToken.None); }
private static OeRequestHeaders GetRequestHeaders(HttpRequestHeaders requestHeaders, HttpResponse httpResponse, bool navigationNextLink, int?maxPageSize) { ((IDictionary <String, StringValues>)requestHeaders).TryGetValue("Prefer", out StringValues preferHeader); var headers = OeRequestHeaders.Parse(requestHeaders.HeaderAccept, preferHeader).SetNavigationNextLink(navigationNextLink); if (maxPageSize != null) { headers = headers.SetMaxPageSize(maxPageSize.Value); } return(new OeHttpRequestHeaders(headers, httpResponse)); }
public async Task <Stream> Get(string query, String acceptHeader) { OeRequestHeaders headers = OeRequestHeaders.Parse(acceptHeader); var parser = new OeParser(_baseUri, DataAdapter, _edmModel); var uri = new Uri(_baseUri, new Uri(query, UriKind.Relative)); var responseStream = new MemoryStream(); await parser.ExecuteQueryAsync(uri, headers, responseStream, CancellationToken.None); responseStream.Position = 0; return(responseStream); }
public async Task <OdataWcfQuery> Get(OdataWcfQuery request) { OeRequestHeaders headers = OeRequestHeaders.Parse(request.ContentType, request.Prefer); headers.ResponseContentType = headers.ContentType; var parser = new OeParser(_baseUri, _edmModel); String query = new StreamReader(request.Content).ReadToEnd(); var uri = new Uri(_baseUri, new Uri(query, UriKind.Relative)); var responseStream = new MemoryStream(); await parser.ExecuteGetAsync(uri, headers, responseStream, CancellationToken.None); responseStream.Position = 0; return(new OdataWcfQuery() { Content = responseStream, ContentType = headers.ResponseContentType }); }
public async Task ExecuteResultAsync(ActionContext context) { var settings = new ODataMessageWriterSettings() { BaseUri = _odataUri.ServiceRoot, EnableMessageStreamDisposal = false, ODataUri = _odataUri, Validations = ValidationKinds.ThrowIfTypeConflictsWithMetadata | ValidationKinds.ThrowOnDuplicatePropertyNames, Version = ODataVersion.V4 }; var requestHeaders = OeRequestHeaders.Parse(context.HttpContext.Request.Headers["Accept"], context.HttpContext.Request.Headers["Prefer"]); _metadataLevel = requestHeaders.MetadataLevel; if (requestHeaders.MaxPageSize > 0 && PageSize == 0) { PageSize = requestHeaders.MaxPageSize; } IODataResponseMessage responseMessage = new OeInMemoryMessage(context.HttpContext.Response.Body, context.HttpContext.Request.ContentType); using (ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, settings, _edmModel)) { ODataUtils.SetHeadersForPayload(messageWriter, ODataPayloadKind.ResourceSet); IEdmEntitySet edmEntitySet = null; IEdmEntityType edmEntityType = null; foreach (IEdmEntitySet element in _edmModel.EntityContainer.EntitySets()) { edmEntityType = element.EntityType(); if (edmEntityType.FullName() == typeof(T).FullName) { edmEntitySet = element; break; } } ODataWriter writer = messageWriter.CreateODataResourceSetWriter(edmEntitySet, edmEntityType); await SerializeAsync(writer); } }