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); }