private static async Task <ODataResponse> ODataProcessRequestAsync(string resource, string queryString, string requestBodyJson, string httpMethod, IConfiguration config) { var httpContext = CreateHttpContext(resource, queryString); var request = httpContext.Request; request.Method = httpMethod; request.Path = resource; request.QueryString = new QueryString(queryString); if (requestBodyJson != null) { request.Body = CreateRequestStream(requestBodyJson); } httpContext.Response.Body = new MemoryStream(); var odata = new ODataMiddleware(null, config, null); var odataRequest = ODataRequest.Parse(httpContext); await odata.ProcessRequestAsync(httpContext, odataRequest).ConfigureAwait(false); var responseOutput = httpContext.Response.Body; responseOutput.Seek(0, SeekOrigin.Begin); string output; using (var reader = new StreamReader(responseOutput)) output = await reader.ReadToEndAsync().ConfigureAwait(false); return(new ODataResponse { Result = output, StatusCode = httpContext.Response.StatusCode }); }
internal static async Task <HttpContext> ODataProcessRequestEmptyResponseAsync(string resource, string queryString, string requestBodyJson, string httpMethod, IConfiguration config) { var httpContext = CreateHttpContext(resource, queryString); var request = httpContext.Request; request.Method = httpMethod; request.Path = resource; request.QueryString = new QueryString(queryString); if (requestBodyJson != null) { request.Body = CreateRequestStream(requestBodyJson); } //httpContext.Response.Body = new MemoryStream(); var odata = new ODataMiddleware(null, config, null); var odataRequest = ODataRequest.Parse(httpContext); await odata.ProcessRequestAsync(httpContext, odataRequest).ConfigureAwait(false); return(httpContext); }