private void ReadContent( ResourceResult <TResource> result, HttpResponseMessage response, WebContentFormat format = WebContentFormat.Xml) { if (ReadResourceContent == null) { result.ResponseContent = response.Content.ReadAsString(); } else { result.Resource = ReadResourceContent(response.Content, format); } }
private static void AssertAcceptableDeleteStatus(ResourceResult <Resource> result) { switch (result.Status) { case HttpStatusCode.OK: Assert.IsNotNull(result.Resource); break; case HttpStatusCode.NoContent: Assert.IsNull(result.Resource); break; default: Assert.Fail(string.Format("Unexpected status <{0}>", result.Status)); break; } }
public ResourceResult <TResource> SendRequest( string method, Uri requestUri, WebContentFormat format = WebContentFormat.Xml, TResource resource = default(TResource), Action <HttpRequestMessage> beforeRequest = null, Action <HttpResponseMessage> afterResponse = null) { var result = new ResourceResult <TResource>(); using (HttpClient client = new HttpClient()) { using (HttpRequestMessage request = new HttpRequestMessage(method, requestUri)) { request.Headers.Accept.Add(WebContentFormatString(format)); if (resource != null) { request.Content = WriteResourceContent(resource, format); } if (beforeRequest != null) { beforeRequest(request); } Debug.WriteLine("Sending {0} to {1}", method, requestUri); using (HttpResponseMessage response = client.Send(request)) { Debug.WriteLine("Response: {0} ({1})", (int)response.StatusCode, response.StatusCode); result.Status = response.StatusCode; result.ResponseHeaders = response.Headers; if (response.Content.HasLength() && response.Content.GetLength() > 0) { switch (result.Status) { case HttpStatusCode.Created: ReadContent(result, response, format); break; case HttpStatusCode.OK: ReadContent(result, response, format); break; case HttpStatusCode.BadRequest: switch (format) { case WebContentFormat.Xml: result.ErrorMessage = response.Content.ReadAsDataContract <string>(); break; case WebContentFormat.Json: result.ErrorMessage = response.Content.ReadAsJsonDataContract <string>(); break; } break; } } if (afterResponse != null) { afterResponse(response); } } } } return(result); }