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