Esempio n. 1
0
 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;
            }
        }
Esempio n. 3
0
        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);
        }