示例#1
0
        internal ContentType ExtractContentTypeFromResponse(IHttpWebResponse response)
        {
            ContentType result;

            if (HttpConverter.TryParseContentType(response.ContentType, out result))
            {
                return(result);
            }

            var headers = response.Headers;
            const ContentType fallback = ContentType.ApplicationJson;

            if (headers == null)
            {
                return(fallback);
            }

            var contentTypeHeader = headers[HttpResponseHeader.ContentType];

            if (contentTypeHeader == null)
            {
                return(fallback);
            }

            var contentType = HttpConverter.ContentType(contentTypeHeader);

            return(contentType);
        }
示例#2
0
 public WebRequester WithPayload(object data, ContentType type)
 {
     _contentTypeProvider   = () => type;
     _payloadModifilerAsync = async req =>
     {
         if (data == null)
         {
             return;
         }
         var serializer = _config.Advanced.Serializers.FirstOrDefault(s => s.ContentType.Contains(_contentTypeProvider()));
         if (serializer == null)
         {
             throw new Exception(string.Format("No Serializer registered for {0}", type));
         }
         var serializedPayload = serializer.Serialize(data);
         var payloadAsBytes    = Encoding.UTF8.GetBytes(serializedPayload);
         req.ContentLength = payloadAsBytes.Length;
         req.ContentType   = HttpConverter.ContentType(_contentTypeProvider());
         using (var stream = await Task <Stream> .Factory.FromAsync(req.BeginGetRequestStream, req.EndGetRequestStream, req))
         {
             await stream.WriteAsync(payloadAsBytes, 0, payloadAsBytes.Length);
         }
     };
     return(this);
 }
        public void ShouldThrowExceptionIfStringDoesNotMatchContentType()
        {
            /* Setup */
            const string nonMatch = "This is not a content type";

            /* Test & Assert */
            Assert.Throws <ArgumentException>(() => HttpConverter.ContentType(nonMatch));
        }
        public void ShouldThrowExceptionIfContentTypeIsUnknown()
        {
            /* Setup */
            var type = ContentType.Unknown;

            /* Test & Assert */
            Assert.Throws <ArgumentException>(() => HttpConverter.ContentType(type));
        }
        public void ShouldConvertContentTypeStringToEnum(string type, ContentType expectedResult)
        {
            /* Setup */
            /* Test */
            var result = HttpConverter.ContentType(type);

            /* Assert */
            Assert.That(result, Is.EqualTo(expectedResult));
        }