示例#1
0
 public async Task CreateTranscodeMessages(FileContentsUploadCompleteEvent fileUploadEvent, Func <string, object, Task> enqueue, bool audio = false)
 {
     await enqueue("Transcode", new TranscodeMessage(fileUploadEvent.FileIdentifier)
     {
         TranscodeConfiguration = audio
             ? "AudioTranscode"
             : "VideoTranscode"
     });
 }
示例#2
0
        public async Task <FileModel> UploadCompleteAsync(
            UploadContextModel uploadContext,
            CancellationToken cancellationToken = default(CancellationToken)
            )
        {
            var uploadStateToken = UploadTokenModel.Parse(uploadContext.UploadToken);

            var upload = await UploadStore.GetOneAsync(uploadStateToken.Identifier, new[]
            {
                new PopulationDirective
                {
                    Name = nameof(UploadModel.Chunks)
                }
            });

            var chunkStates = upload.Chunks?.Rows
                              .OrderBy(c => c.ChunkIndex)
                              .Select(c => new ChunkedStatusModel
            {
                ChunkIndex     = c.ChunkIndex,
                UploadChunkKey = c.Identifier.UploadChunkKey,
                State          = c.State,
                Success        = true
            })
                              .ToArray();

            var fileLocator = await FileStore.FileLocatorGetAsync(uploadStateToken.Identifier);

            var returnData = await BackendClient.CompleteChunkedUploadAsync(
                await LoadConfigurationAsync(uploadStateToken.Identifier as OrganizationIdentifier),
                uploadStateToken.Identifier.UploadKey,
                fileLocator,
                chunkStates
                );

            var fileModel = await FileStore.GetOneAsync(uploadStateToken.Identifier);

            await FileStore.UpdateAsync(fileModel);

            if (returnData != null)
            {
                await FileStore.HashSetAsync(
                    fileModel.Identifier,
                    GetHash(returnData, "md5"),
                    GetHash(returnData, "sha1"),
                    GetHash(returnData, "sha256")
                    );
            }

            await FileStore.UploadingStatusSetAsync(fileModel.Identifier, false);

            await UploadStore.Cleanup(upload.Identifier);

            var evt = new FileContentsUploadCompleteEvent
            {
                FileIdentifier = fileModel.Identifier
            };

            evt.Populate(fileModel);

            await EventSender.SendAsync(evt);

            return(fileModel);
        }
示例#3
0
 public Task CreateExifMessage(FileContentsUploadCompleteEvent fileUploadEvent, Func <string, object, Task> enqueue)
 => enqueue("ExifTool", new FileBasedMessage(fileUploadEvent.FileIdentifier));
示例#4
0
 public Task CreateToPDFMessage(FileContentsUploadCompleteEvent fileUploadEvent, Func <string, object, Task> enqueue)
 => enqueue("ToPDF", new ConvertToPDFMessage(fileUploadEvent.FileIdentifier));
示例#5
0
 public Task CreateArchiveMessages(FileContentsUploadCompleteEvent fileUploadEvent, Func <string, object, Task> enqueue)
 => enqueue("Archive", new ArchiveMessage(fileUploadEvent.FileIdentifier));
示例#6
0
 public Task CreateTextExtractMessage(FileContentsUploadCompleteEvent fileUploadEvent, Func <string, object, Task> enqueue)
 => enqueue("TextExtract", new TextExtractMessage(fileUploadEvent.FileIdentifier));
示例#7
0
 // Here we're going to fan out our file upload event to any image generation messages that need to happen
 public Task CreateImageGenMessages(FileContentsUploadCompleteEvent fileUploadEvent, FolderModel folder, Func <string, object, Task> enqueue)
 => enqueue("ImageGen", new ImageGenMessage {
     Identifier = fileUploadEvent.FileIdentifier
 });