public void AllHandlersAreCalledTest() { var b = new GenericPipelineBuilder<object>(); b.Use(next => ((request, content, meta) => { meta.Extra.Add("handler1", "handler1"); return next(request, content, meta); })); b.Use(next => ((request, content, meta) => { meta.Extra.Add("handler2", "handler2"); return next(request, content, meta); })); b.Use(next => ((request, content, meta) => { meta.Extra.Add("handler3", "handler3"); return next(request, content, meta); })); var res = b.Run((x, y, z) => Task.FromResult(new MetaInfo(z)))(null, null, new MetaInfo { Extra = new Dictionary<string, string>() }).Result; Assert.IsNotNull(res); Assert.IsNotNull(res.Extra); Assert.AreEqual(3, res.Extra.Count); Assert.IsTrue(res.Extra.ContainsKey("handler1")); Assert.IsTrue(res.Extra.ContainsKey("handler2")); Assert.IsTrue(res.Extra.ContainsKey("handler3")); }
public void AllHandlersAreCalledTest() { var b = new GenericPipelineBuilder <object>(); b.Use(next => ((request, content, meta) => { meta.Extra.Add("handler1", "handler1"); return(next(request, content, meta)); })); b.Use(next => ((request, content, meta) => { meta.Extra.Add("handler2", "handler2"); return(next(request, content, meta)); })); b.Use(next => ((request, content, meta) => { meta.Extra.Add("handler3", "handler3"); return(next(request, content, meta)); })); var res = b.Run((x, y, z) => Task.FromResult(new MetaInfo(z)))(null, null, new MetaInfo { Extra = new Dictionary <string, string>() }).Result; Assert.IsNotNull(res); Assert.IsNotNull(res.Extra); Assert.AreEqual(3, res.Extra.Count); Assert.IsTrue(res.Extra.ContainsKey("handler1")); Assert.IsTrue(res.Extra.ContainsKey("handler2")); Assert.IsTrue(res.Extra.ContainsKey("handler3")); }
public static Func <HttpRequest, Stream, Task> DisableGet( this GenericPipelineBuilder <HttpRequest> builder) { return(builder.Run((request, outStream) => { outStream = Stream.Null; return Task.CompletedTask; })); }
public static Func <HttpRequest, Stream, Task> GetStoreFileAsIs( this GenericPipelineBuilder <HttpRequest> builder, Func <IFileStorageService> storageServceResolverFunc) { return(builder.Run(async(request, outStream) => { var fileStorage = storageServceResolverFunc(); var result = await fileStorage.Get(request.GetAbsoluteUri()); await result.CopyToAsync(outStream); })); }
public static GenericPipelineBuilder <HttpRequest> UseOriginalFileinfo(this GenericPipelineBuilder <HttpRequest> builder) { return(builder.Use(next => async(request, content, info) => { //Set file info info.MimeType = content.Headers.ContentType.ToString(); info.OriginalName = content.Headers.ContentDisposition.FileName?.Trim('"') ?? "noname"; return await next(request, content, info); })); }
public void FinallizerCalledTest() { var b = new GenericPipelineBuilder<object>(); var res = b.Run((request, content, fileInfo) => { fileInfo.Extra.Add("finalizer", "FinallizerCalledTest"); return Task.FromResult(new MetaInfo(fileInfo)); })(null, null, new MetaInfo { Extra = new Dictionary<string, string>() }).Result; Assert.IsNotNull(res); Assert.IsNotNull(res.Extra); Assert.IsTrue(res.Extra.ContainsKey("finalizer")); Assert.AreEqual("FinallizerCalledTest", res.Extra["finalizer"]); }
public static Func <HttpRequest, HttpContent, IFileInfo, Task <MetaInfo> > RunStoreFileAsIs( this GenericPipelineBuilder <HttpRequest> builder, Func <IFileStorageService> storageServceResolverFunc) { return(builder.Run(async(request, content, info) => { var fileStorage = storageServceResolverFunc(); using (var stream = await content.ReadAsStreamAsync()) { return await fileStorage.Create(stream, info); } })); }
public void FinallizerCalledTest() { var b = new GenericPipelineBuilder <object>(); var res = b.Run((request, content, fileInfo) => { fileInfo.Extra.Add("finalizer", "FinallizerCalledTest"); return(Task.FromResult(new MetaInfo(fileInfo))); })(null, null, new MetaInfo { Extra = new Dictionary <string, string>() }).Result; Assert.IsNotNull(res); Assert.IsNotNull(res.Extra); Assert.IsTrue(res.Extra.ContainsKey("finalizer")); Assert.AreEqual("FinallizerCalledTest", res.Extra["finalizer"]); }
public static GenericPipelineBuilder <HttpRequest> UseMultipartRequestParser(this GenericPipelineBuilder <HttpRequest> builder) { return(builder.Use(next => async(request, content, info) => { //Extract multipart if need if (content.IsMimeMultipartContent()) { var provider = await content.ReadAsMultipartAsync(); var firstFileContent = provider.Contents.FirstOrDefault( c => !string.IsNullOrWhiteSpace(c.Headers.ContentDisposition.FileName)); if (firstFileContent != null) { return await next(request, firstFileContent, info); } throw new ArgumentException("Multipart content detected, but no files found inside."); } return await next(request, content, info); })); }