Ejemplo n.º 1
0
        private static Task <bool> HandleOnBeforeCreateAsync(ContextAdapter context, bool supportsUploadConcat,
                                                             UploadConcat uploadConcat, string metadata, long uploadLength)
        {
            if (context.Configuration.Events?.OnBeforeCreateAsync == null)
            {
                return(Task.FromResult(false));
            }

            return(HandleOnBeforeCreateAsyncLocal());

            async Task <bool> HandleOnBeforeCreateAsyncLocal()
            {
                var beforeCreateContext = BeforeCreateContext.Create(context, ctx =>
                {
                    ctx.FileConcatenation = supportsUploadConcat ? uploadConcat.Type : null;
                    ctx.Metadata          = Metadata.Parse(metadata);
                    ctx.UploadLength      = uploadLength;
                });

                await context.Configuration.Events.OnBeforeCreateAsync(beforeCreateContext);

                if (beforeCreateContext.HasFailed)
                {
                    return(await context.Response.Error(HttpStatusCode.BadRequest, beforeCreateContext.ErrorMessage));
                }

                return(false);
            }
        }
Ejemplo n.º 2
0
        private static async Task <string> HandleCreationOfConcatFiles(
            ContextAdapter context,
            UploadConcat uploadConcat,
            ITusConcatenationStore tusConcatenationStore,
            long uploadLength,
            string metadata,
            CancellationToken cancellationToken)
        {
            string fileId;

            if (uploadConcat.Type is FileConcatPartial)
            {
                fileId = await tusConcatenationStore
                         .CreatePartialFileAsync(uploadLength, metadata, cancellationToken);

                await HandleOnCreateComplete(context, fileId, true, uploadConcat, metadata, uploadLength);
            }
            else
            {
                var finalConcat = (FileConcatFinal)uploadConcat.Type;
                fileId = await tusConcatenationStore.CreateFinalFileAsync(finalConcat.Files, metadata,
                                                                          cancellationToken);

                await HandleOnCreateComplete(context, fileId, true, uploadConcat, metadata, uploadLength);

                // Run callback that the final file is completed.
                await HandleOnFileComplete(context, cancellationToken, fileId);
            }

            return(fileId);
        }
Ejemplo n.º 3
0
        private static Task HandleOnCreateComplete(
            ContextAdapter context, string fileId, bool supportsUploadConcat,
            UploadConcat uploadConcat, string metadata, long uploadLength)
        {
            if (context.Configuration.Events?.OnCreateCompleteAsync == null)
            {
                return(Task.FromResult(0));
            }

            return(context.Configuration.Events.OnCreateCompleteAsync(CreateCompleteContext.Create(context, ctx =>
            {
                ctx.FileId = fileId;
                ctx.FileConcatenation = supportsUploadConcat ? uploadConcat.Type : null;
                ctx.Metadata = Metadata.Parse(metadata);
                ctx.UploadLength = uploadLength;
            })));
        }