/// <summary> /// Executes the operation. /// </summary> /// <param name="batchReader">The batch reader.</param> /// <param name="batchId">The batch id.</param> /// <param name="originalRequest">The original request containing all the batch requests.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests.</param> /// <returns>The response for the operation.</returns> public virtual async Task <ODataBatchResponseItem> ExecuteOperationAsync(ODataBatchReader batchReader, Guid batchId, HttpRequestMessage originalRequest, CancellationToken cancellationToken) { if (batchReader == null) { throw Error.ArgumentNull("batchReader"); } if (originalRequest == null) { throw Error.ArgumentNull("originalRequest"); } cancellationToken.ThrowIfCancellationRequested(); HttpRequestMessage operationRequest = await batchReader.ReadOperationRequestAsync(batchId, bufferContentStream : false); operationRequest.CopyBatchRequestProperties(originalRequest); OperationRequestItem operation = new OperationRequestItem(operationRequest); try { ODataBatchResponseItem response = await operation.SendRequestAsync(Invoker, cancellationToken); return(response); } finally { originalRequest.RegisterForDispose(operation.GetResourcesForDisposal()); originalRequest.RegisterForDispose(operation); } }
public void Parameter_Constructor() { HttpRequestMessage request = new HttpRequestMessage(); OperationRequestItem requestItem = new OperationRequestItem(request); Assert.Same(request, requestItem.Request); }
public void Dispose_DisposesHttpRequestMessage() { OperationRequestItem requestItem = new OperationRequestItem(new MockHttpRequestMessage()); requestItem.Dispose(); Assert.True(((MockHttpRequestMessage)requestItem.Request).IsDisposed); }
public void SendRequestAsync_NullInvoker_Throws() { OperationRequestItem requestItem = new OperationRequestItem(new HttpRequestMessage()); Assert.ThrowsArgumentNull( () => requestItem.SendRequestAsync(null, CancellationToken.None).Wait(), "invoker"); }
public void GetResourcesForDisposal_ReturnsResourceRegisteredForDispose() { var disposeObject = new StringContent("foo"); var request = new HttpRequestMessage(HttpMethod.Get, "http://example.com"); request.RegisterForDispose(disposeObject); OperationRequestItem requestItem = new OperationRequestItem(request); var resourcesForDisposal = requestItem.GetResourcesForDisposal(); Assert.Equal(1, resourcesForDisposal.Count()); Assert.Contains(disposeObject, resourcesForDisposal); }
public void SendRequestAsync_ReturnsOperationResponse() { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://example.com"); OperationRequestItem requestItem = new OperationRequestItem(request); Mock<HttpMessageInvoker> invoker = new Mock<HttpMessageInvoker>(new HttpServer()); invoker.Setup(i => i.SendAsync(It.IsAny<HttpRequestMessage>(), CancellationToken.None)) .Returns(() => { return Task.FromResult(new HttpResponseMessage(HttpStatusCode.NotModified)); }); var response = requestItem.SendRequestAsync(invoker.Object, CancellationToken.None).Result; var operationResponse = Assert.IsType<OperationResponseItem>(response); Assert.Equal(HttpStatusCode.NotModified, operationResponse.Response.StatusCode); }
/// <summary> /// Executes the operation. /// </summary> /// <param name="batchReader">The batch reader.</param> /// <param name="batchId">The batch id.</param> /// <param name="originalRequest">The original request containing all the batch requests.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests.</param> /// <returns>The response for the operation.</returns> public virtual async Task<ODataBatchResponseItem> ExecuteOperationAsync(ODataBatchReader batchReader, Guid batchId, HttpRequestMessage originalRequest, CancellationToken cancellationToken) { if (batchReader == null) { throw Error.ArgumentNull("batchReader"); } if (originalRequest == null) { throw Error.ArgumentNull("originalRequest"); } cancellationToken.ThrowIfCancellationRequested(); HttpRequestMessage operationRequest = await batchReader.ReadOperationRequestAsync(batchId, bufferContentStream: false); operationRequest.CopyBatchRequestProperties(originalRequest); OperationRequestItem operation = new OperationRequestItem(operationRequest); try { ODataBatchResponseItem response = await operation.SendRequestAsync(Invoker, cancellationToken); return response; } finally { originalRequest.RegisterForDispose(operation.GetResourcesForDisposal()); originalRequest.RegisterForDispose(operation); } }