public static async Task <HttpResponseMessage> PostAsync(string url, BodyContentModels bodyContent, string accessToken = "") { var client = new HttpClient(); client.DefaultRequestHeaders.Clear(); if (!string.IsNullOrEmpty(accessToken)) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); } client.DefaultRequestHeaders .Accept .Add(new MediaTypeWithQualityHeaderValue(JSONMEDIA)); //ACCEPT header HttpContent content = null; if (bodyContent != null) { if (bodyContent.Scheme == MEDIA_SCHEME.Json) { content = new StringContent(bodyContent.JsonString, Encoding.UTF8, JSONMEDIA); } if (bodyContent.Scheme == MEDIA_SCHEME.Form) { var form = new MultipartFormDataContent(); foreach (var formItem in bodyContent.FormContent) { if (formItem.Content is Byte[]) { var fileBytes = formItem.Content as Byte[]; var fileContent = new ByteArrayContent(fileBytes, 0, fileBytes.Length); // Mime types are constantly maintained here // https://github.com/samuelneff/MimeTypeMap // By samuelneff string mimeType = MimeTypes.MimeTypeMap.GetMimeType(formItem.FileName); fileContent.Headers.Add("Content-Type", mimeType); form.Add(fileContent, formItem.Name, formItem.FileName); } else if (formItem.Content is string) { form.Add(new StringContent(formItem.Content as string), formItem.Name); } } content = form; } } return(await client.PostAsync(url, content)); }
public async Task <TaskModels <TaskFileResultModels> > Post(object model, string query) { BodyContentModels bodyContent = new BodyContentModels(); bodyContent.JsonString = JsonConvert.SerializeObject(model); bodyContent.Scheme = MEDIA_SCHEME.Json; var response = await WebRequests.PostAsync(ApiEndpoint + query, bodyContent, AccessToken); if (response.StatusCode == System.Net.HttpStatusCode.OK || response.ReasonPhrase == "Created") { var task = await RetrieveTask <object>(response); return(await WaitForTaskComplete <TaskFileResultModels>(task.data.id)); } else { return(null); } }
public async Task <TaskModels <TaskFileResultModels> > Import(Byte[] fileBytes, string fileName) { var url = commonService.ApiEndpoint + @"/v2/import/upload"; var response = await WebRequests.PostAsync(url, null, commonService.AccessToken); var taskModelWithForm = await commonService.RetrieveTask <TaskFormResultModels>(response); long milliseconds = new DateTimeOffset(DateTime.UtcNow.AddDays(1)).ToUnixTimeMilliseconds(); BodyContentModels bodyContent = new BodyContentModels(); var parameters = taskModelWithForm.data.result.form.parameters; bodyContent.FormContent = new System.Collections.Generic.List <FormData> { new FormData(nameof(parameters.acl), parameters.acl ?? ""), new FormData(nameof(parameters.key), parameters.key ?? ""), new FormData(nameof(parameters.Policy), parameters.Policy ?? ""), new FormData(nameof(parameters.success_action_status), parameters.success_action_status ?? ""), new FormData(StaticMethods.GetJsonPropertyName <TaskParametersModels>(x => x.XAmzAlgorithm), parameters.XAmzAlgorithm ?? ""), new FormData(StaticMethods.GetJsonPropertyName <TaskParametersModels>(x => x.XAmzCredential), parameters.XAmzCredential ?? ""), new FormData(StaticMethods.GetJsonPropertyName <TaskParametersModels>(x => x.XAmzDate), parameters.XAmzDate ?? ""), new FormData(StaticMethods.GetJsonPropertyName <TaskParametersModels>(x => x.XAmzSignature), parameters.XAmzSignature ?? ""), new FormData("file", fileBytes) { FileName = fileName } }; bodyContent.Scheme = MEDIA_SCHEME.Form; response = await WebRequests.PostAsync(taskModelWithForm.data.result.form.url, bodyContent); if (response.StatusCode == System.Net.HttpStatusCode.OK || response.ReasonPhrase == "Created") { return(await RetrieveTask(response, taskModelWithForm)); } else { return(null); } }