private Task <string> GetContent <T>(T model, RequestDataFormat format)
        {
            switch (format)
            {
            case RequestDataFormat.Json:
                return(Task.FromResult(JsonConvert.SerializeObject(model, new JsonSerializerSettings()
                {
                    ContractResolver = new MeshyDBJsonContractResolver(),
                })));

            case RequestDataFormat.Form:
                var content = new FormUrlEncodedContent(model.GetType()
                                                        .GetProperties(BindingFlags.Instance | BindingFlags.Public)
                                                        .ToDictionary(
                                                            prop =>
                {
                    var jsonProp = prop.GetCustomAttributes().FirstOrDefault(x => x.GetType() == typeof(JsonPropertyAttribute)) as JsonPropertyAttribute;

                    return(jsonProp?.PropertyName ?? prop.Name);
                }, prop => prop.GetValue(model, null)?.ToString()));

                content.Headers.ContentType.CharSet = Encoding.UTF8.BodyName;

                return(content.ReadAsStringAsync());

            default:
                return(Task.FromResult <string>(null));
            }
        }
        /// <inheritdoc/>
        public Task <T> PatchRequest <T>(string path, object model, RequestDataFormat format = RequestDataFormat.Json)
        {
            var request = this.GetDefaultRequestMessageAsync(path, new HttpMethod("PATCH")).ConfigureAwait(false).GetAwaiter().GetResult();

            request.Content           = this.GetContent(model, format).ConfigureAwait(false).GetAwaiter().GetResult();
            request.RequestDataFormat = format;

            if (format == RequestDataFormat.Form)
            {
                request.ContentType = "application/x-www-form-urlencoded";
            }

            return(this.SendRequest <T>(request));
        }
 public static bool IsFeed(this RequestDataFormat dataFormat)
 {
     return(dataFormat == RequestDataFormat.RSS || dataFormat == RequestDataFormat.ATOM);
 }