Ejemplo n.º 1
0
 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());
 }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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));
        }