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