private static async Task <HttpContent> ToStreamContent(ObjectContent content) { Stream stream = await content.ReadAsStreamAsync(); StreamContent streamContent = new StreamContent(stream); foreach (var header in content.Headers) { streamContent.Headers.TryAddWithoutValidation(header.Key, header.Value); } return(streamContent); }
public void PrimitiveTypesDeserializeAsOData(string typeString, Type type, object value) { HttpConfiguration configuration = new HttpConfiguration(); ODataConventionModelBuilder model = new ODataConventionModelBuilder(); model.EntitySet<WorkItem>("WorkItems"); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/WorkItems(10)/ID"); request.Properties[HttpPropertyKeys.HttpConfigurationKey] = configuration; ODataMediaTypeFormatter formatter = CreateFormatter(model.GetEdmModel(), request); ObjectContent content = new ObjectContent(type, value, formatter, "application/xml"); var stream = content.ReadAsStreamAsync().Result; Assert.Equal( value, formatter.ReadFromStreamAsync(type, stream, content, new Mock<IFormatterLogger>().Object).Result); }
public void PrimitiveTypesDeserializeAsOData(string typeString, Type type, object value) { HttpConfiguration configuration = new HttpConfiguration(); ODataConventionModelBuilder model = new ODataConventionModelBuilder(); model.EntitySet <WorkItem>("WorkItems"); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/WorkItems(10)/ID"); request.Properties[HttpPropertyKeys.HttpConfigurationKey] = configuration; ODataMediaTypeFormatter formatter = CreateFormatter(model.GetEdmModel(), request); ObjectContent content = new ObjectContent(type, value, formatter, "application/xml"); var stream = content.ReadAsStreamAsync().Result; Assert.Equal( value, formatter.ReadFromStreamAsync(type, stream, content, new Mock <IFormatterLogger>().Object).Result); }
/// <summary> /// Sets up a response for SendAsync /// </summary> /// <typeparam name="T"></typeparam> /// <param name="mock"></param> /// <param name="statusCode">The response status code</param> /// <param name="responseBody">Object to be rendered as Json in the response body</param> /// <returns></returns> public static IReturnsResult <TestableHttpMessageHandler> RespondsWith <T>(this IReturns <TestableHttpMessageHandler, Task <HttpResponseMessage> > mock, HttpStatusCode statusCode, T responseBody) => mock.Returns(async(HttpRequestMessage request, CancellationToken token) => { var response = request.CreateResponse(statusCode); if (responseBody != null) { // Convert the input object into a stream and use this stream as the reponse's content. // This simulates real Http responses and helps detect deserialisation errors early var objectContent = new ObjectContent <T>(responseBody, new JsonMediaTypeFormatter()); var stream = await objectContent.ReadAsStreamAsync(); var streamContent = new StreamContent(stream); streamContent.Headers.ContentType = objectContent.Headers.ContentType; response.Content = streamContent; } return(response); });
public void RoundTripUsingBson() { //Arrange var formatters = new[] { new JsonNetFormatter() }; var fromContact = new Contact { FirstName = "Brad", LastName = "Abrams" }; // Act var fromContent = new ObjectContent<Contact>(fromContact, "application/bson", formatters); var contentReadStream = fromContent.ReadAsStreamAsync().Result; var newStream = new MemoryStream(); contentReadStream.Position = 0; contentReadStream.CopyTo(newStream); newStream.Position = 0; var toContent = new ObjectContent<Contact>(new StreamContent(newStream), formatters); toContent.Headers.ContentType = new MediaTypeHeaderValue("application/bson"); var toContact = toContent.ReadAsAsync<Contact>().Result; //Arrange Assert.AreEqual(fromContact.FirstName, toContact.FirstName); Assert.AreEqual(fromContact.LastName, toContact.LastName); }
private Task <HttpContent> ToStreamContent(HttpContent content) { ObjectContent objectContent = content as ObjectContent; if (objectContent != null) { return(objectContent .ReadAsStreamAsync() .Then <Stream, HttpContent>(stream => { StreamContent streamContent = new StreamContent(stream); foreach (var header in objectContent.Headers) { streamContent.Headers.TryAddWithoutValidation(header.Key, header.Value); } return streamContent; })); } else { return(TaskHelpers.FromResult(content)); } }