private async Task ExecuteChunkUploadMessage(HttpRequestMessage requestMessage, CancellationToken cancellationToken) { await TryPauseAsync(cancellationToken).ConfigureAwait(false); requestMessage.AddDefaultHeaders(Client); var client = GetHttpClient(); using ( var responseMessage = await RequestExecutor.SendAsync( client, requestMessage, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false)) { if (Configuration.IsNetCore) { progressReporter.ReportProgress(requestMessage.Content.Headers.ContentLength.GetValueOrDefault()); } string responseContent = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false); ValidateChunkResponse(responseMessage, responseContent); } }
protected override UploadResponse InternalUpload(CancellationToken cancellationToken) { SetUploadSpecification(); int tryCount = 0; while (true) { try { TryPause(); if (cancellationToken.IsCancellationRequested) { throw new TaskCanceledException(); } var httpClient = GetHttpClient(); using (var requestMessage = new HttpRequestMessage( HttpMethod.Post, GetChunkUriForStandardUploads())) { using (var streamContent = new StreamContentWithProgress(new NoDisposeStream(FileStream), progressReporter.ReportProgress, cancellationToken)) { streamContent.TryPauseAction = TryPauseAsync; requestMessage.AddDefaultHeaders(Client); streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); requestMessage.Content = streamContent; if (!UploadSpecificationRequest.Raw) { var multiPartContent = new MultipartFormDataContent(); multiPartContent.Add(streamContent, "Filedata", UploadSpecificationRequest.FileName); requestMessage.Content = multiPartContent; } var responseMessage = httpClient.SendAsync(requestMessage, CancellationToken.None).WaitForTask(); return(GetUploadResponse(responseMessage)); } } } catch (Exception ex) { if (tryCount >= 3 || !FileStream.CanSeek || ex is TaskCanceledException) { throw; } else { tryCount += 1; FileStream.Seek(0, SeekOrigin.Begin); } } } }
private async Task <HttpResponseMessage> SendHttpRequest(HttpRequestMessage requestMessage, CancellationToken cancellationToken) { var client = GetHttpClient(); requestMessage.Headers.Add("Accept", "application/json"); requestMessage.AddDefaultHeaders(Client); return(await RequestExecutor.SendAsync( client, requestMessage, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false)); }
private UploadResponse FinishUpload() { var finishUri = GetFinishUriForThreadedUploads(); var client = GetHttpClient(); var requestMessage = new HttpRequestMessage(HttpMethod.Get, finishUri); requestMessage.Headers.Add("Accept", "application/json"); requestMessage.AddDefaultHeaders(Client); var response = RequestExecutor.Send(client, requestMessage, HttpCompletionOption.ResponseContentRead); return(GetUploadResponse(response, HashProvider.GetComputedHashAsString())); }
private async Task <UploadResponse> FinishUploadAsync() { var client = GetHttpClient(); var finishUri = this.GetFinishUriForThreadedUploads(); var requestMessage = new HttpRequestMessage(HttpMethod.Get, finishUri); requestMessage.Headers.Add("Accept", "application/json"); requestMessage.AddDefaultHeaders(Client); var response = await RequestExecutor.SendAsync( client, requestMessage, HttpCompletionOption.ResponseContentRead, default(CancellationToken)).ConfigureAwait(false); return(await GetUploadResponseAsync(response, HashProvider.GetComputedHashAsString()).ConfigureAwait(false)); }