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"));
        }
Exemplo n.º 3
0
 public static Func <HttpRequest, Stream, Task> DisableGet(
     this GenericPipelineBuilder <HttpRequest> builder)
 {
     return(builder.Run((request, outStream) =>
     {
         outStream = Stream.Null;
         return Task.CompletedTask;
     }));
 }
Exemplo n.º 4
0
 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);
     }));
 }
Exemplo n.º 5
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);
     }));
 }
        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"]);
        }
Exemplo n.º 7
0
 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"]);
        }
Exemplo n.º 9
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);
     }));
 }