public HttpRequestMessage FinishUploadMedia(CompletedUpload finished, string uuid) { return(BaseRequestBuilder .StartNew() .WithEndpoint(EXPERIMENTAL + $"usermedia/{uuid}/finish-upload/") .WithMethod(HttpMethod.Post) .WithAuth(AuthHeader) .WithContent(new StringContent(finished.Serialize(), Encoding.UTF8, "application/json")) .GetRequest()); }
private async void FinishUpload(UploadOperation operation, ICompletedUpload upload) { if (operation.Progress.Status == BackgroundTransferStatus.Completed) { try { string serverResponse = await(new StreamReader( operation.GetResultStreamAt(0).AsStreamForRead())).ReadToEndAsync(); var newUpload = new CompletedUpload { Id = upload.Id, Name = upload.Name, ContentType = upload.ContentType, ServerResponse = serverResponse }; await _database.InsertOrReplaceAsync(newUpload); var result = await _uploadsPostprocessor.ProcessUploadAsync(newUpload); if (result != UploadsPostprocessorResultType.ConnectionError) { await _database.RemoveAsync(operation.Guid); } } catch (Exception ex) { _logService.LogException(ex); } } else { await _database.RemoveAsync(operation.Guid); } OnUploadProgressChanged(operation, upload); _cts.Remove(operation.Guid); _uploads.Remove(operation); if (_uploads.Count == 0) { UploadsCompleted?.Invoke(this, EventArgs.Empty); } }
private async Task <Tuple <UploadOperation, ICompletedUpload> > CreateUploadOperationAsync( IEnumerable <BackgroundTransferContentPart> parts, IUpload upload) { var uploader = new BackgroundUploader(); uploader.TransferGroup = _transferGroup; AttachNotifications(uploader, upload); var operation = await uploader.CreateUploadAsync(new Uri(upload.UploadUrl), parts); var completedUpload = new CompletedUpload { Id = operation.Guid, Name = upload.Uploadable.Name, ContentType = upload.Uploadable.ContentType }; await _database.InsertAsync(completedUpload); return(new Tuple <UploadOperation, ICompletedUpload>(operation, completedUpload)); }