コード例 #1
0
        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"));
        }
コード例 #2
0
        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"));
        }
コード例 #3
0
 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);
     }));
 }
コード例 #4
0
 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);
     }));
 }