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