public static async Task <TResult> PostStreamAsync <TResult>(this GeneralHttpClient apiClient, string path, object data, string contentType = CustomMediaTypeNames.FormData) { IDictionary <string, object> dataArray; if (data is Dictionary <string, object> ) { dataArray = data as Dictionary <string, object>; } else { dataArray = data.ToDictionary(); } HttpContent httpContent; switch (contentType) { case CustomMediaTypeNames.FormDataCompress: case CustomMediaTypeNames.FormData: httpContent = new MultipartFormDataContent(); foreach (var dataItem in dataArray) { byte[] byteArrary; if (contentType == CustomMediaTypeNames.FormDataCompress) { byteArrary = Util.Compress(Util.Compress(Util.ConvertObjectToByteArray(dataItem.Value))); } else { byteArrary = Util.ConvertObjectToByteArray(dataItem.Value); } ByteArrayContent byteArrayContent = new ByteArrayContent(byteArrary); byteArrayContent.Headers.ContentType = new MediaTypeHeaderValue(CustomMediaTypeNames.OctetStream); ((MultipartFormDataContent)httpContent).Add(byteArrayContent, dataItem.Key, dataItem.Key); if (contentType == CustomMediaTypeNames.FormDataCompress) { httpContent.Headers.Add("Compress", "true"); } } break; default: httpContent = new StringContent("no content"); break; } var result = await apiClient.ExecuteAsync <TResult>(HttpMethod.Post, path, httpContent, contentType); return(result); }
/// <summary> POST request to api, path is relative or root</summary> public static TResult Post <TResult>(this GeneralHttpClient apiClient, string path, object data, string contentType = null) { return(apiClient.Execute <TResult>(HttpMethod.Post, path, data, contentType)); }
/// <summary> DELETE ASYNC request to api with SaveChanges, path is relative or root</summary> public static Task <TResult> DeleteAsync <TResult>(this GeneralHttpClient apiClient, string path, object data, string contentType = null) { return(apiClient.ExecuteAsync <TResult>(HttpMethod.Delete, path, data, contentType)); }
/// <summary> GET ASYNC request to api, path is relative or root, path is relative or root</summary> public static Task <TResult> GetAsync <TResult>(this GeneralHttpClient apiClient, string path) { return(apiClient.ExecuteAsync <TResult>(HttpMethod.Get, path, null)); }
/// <summary> ASYNC COMPRESS POST request to api, path is relative or root</summary> public static async Task <TResult> PostCompressAsync <TResult>(this GeneralHttpClient apiClient, string path, object data) { var result = await apiClient.ExecuteAsync <TResult>(HttpMethod.Post, path, data, CustomMediaTypeNames.CrpmZip); return(result); }