Example #1
0
        private static void Flatten(List <String> pairs, JToken input, List <Object> indices)
        {
            if (input == null)
            {
                return;
            }

            switch (input.Type)
            {
            case JTokenType.Array:
            case JTokenType.Object:
            case JTokenType.Property:
                foreach (var token in input)
                {
                    indices.Add(token);
                    WwwFormUrlEncodedMediaTypeFormatter.Flatten(pairs, token, indices);
                    indices.RemoveAt(indices.Count - 1);
                }

                break;

            default:
                var value = input.ToObject <String>();
                if (value == null)
                {
                    return;
                }
                pairs.Add(String.Format("{0}={1}", Uri.EscapeDataString(input.Path), Uri.EscapeDataString(value)));
                break;
            }
        }
Example #2
0
        public virtual async Task <ApiResult <TResponse, TError> > DeleteAsync <TResponse, TError>(String resource, Object data = null, MediaTypeFormatterEnum?mediaTypeFormatter = null)
        {
            var query = WwwFormUrlEncodedMediaTypeFormatter.Serialize(data);

            if (!String.IsNullOrWhiteSpace(query))
            {
                if (resource.Contains("?"))
                {
                    resource = $"{resource}&{query}";
                }
                else
                {
                    resource = $"{resource}?{query}";
                }
            }

            var result = await this._client.DeleteAsync(resource);

            if (result.StatusCode == HttpStatusCode.OK)
            {
                return new ApiResult <TResponse, TError> {
                           Response = await result.Content.ReadAsAsync <TResponse>()
                }
            }
            ;

            return(new ApiResult <TResponse, TError> {
                Error = await result.Content.ReadAsAsync <TError>()
            });
        }
Example #3
0
        public static String Serialize(Object value)
        {
            if (value == null)
            {
                return(null);
            }

            JToken        token = JToken.FromObject(value);
            List <String> pairs = new List <String>();

            WwwFormUrlEncodedMediaTypeFormatter.Flatten(pairs, token, new List <Object> {
            });
            return(String.Join("&", pairs));
        }
Example #4
0
        public virtual TResponse Delete <TResponse>(String resource, Object data = null, MediaTypeFormatterEnum?mediaTypeFormatter = null)
        {
            var query = WwwFormUrlEncodedMediaTypeFormatter.Serialize(data);

            if (!String.IsNullOrWhiteSpace(query))
            {
                if (resource.Contains("?"))
                {
                    resource = $"{resource}&{query}";
                }
                else
                {
                    resource = $"{resource}?{query}";
                }
            }

            return(this._client.DeleteAsync(resource).Result.Content.ReadAsAsync <TResponse>().Result);
        }
Example #5
0
 public override Task WriteToStreamAsync(Type type, Object value, Stream writeStream, System.Net.Http.HttpContent content, System.Net.TransportContext transportContext, System.Threading.CancellationToken cancellationToken)
 {
     if (value == null)
     {
         return(Task.FromResult(0)); // Task.CompletedTask
     }
     else if (base.CanWriteType(type))
     {
         return(base.WriteToStreamAsync(type, value, writeStream, content, transportContext));
     }
     else
     {
         return(Task.Factory.StartNew(() =>
         {
             Byte[] bytes = encoding.GetBytes(WwwFormUrlEncodedMediaTypeFormatter.Serialize(value));
             writeStream.Write(bytes, 0, bytes.Length);
         }, cancellationToken));
     }
 }