internal static IHandlerBuilder <CommandMessage <TMessage> > LogAuthorizeAndValidate <TMessage, TValidator>(
     this IHandlerBuilder <CommandMessage <TMessage> > handleBuilder, TValidator validator)
 {
     return(handleBuilder
            .LogExceptions()
            .DenyAnonymous()
            .ValidateWith(validator));
 }
Beispiel #2
0
        public static TestRunner Run(IHandlerBuilder handlerBuilder, bool defaults = true)
        {
            var runner = new TestRunner(defaults);

            runner.Host.Handler(handlerBuilder).Start();

            return(runner);
        }
        protected Upstream(ushort port, IHandlerBuilder handler)
        {
            Host = GenHTTP.Engine.Host.Create()
                   .Port(port)
                   .Handler(handler)
                   .Start();

            Port = port;
        }
 /// <summary>
 /// Handles the message and is the last stage in a handler pipeline.
 /// </summary>
 /// <param name="handlerBuilder">The <see cref="IHandlerBuilder{TMessage}"/>instance.</param>
 /// <param name="handler">The handler.</param>
 public static void Handle <TMessage>(this IHandlerBuilder <TMessage> handlerBuilder, HandlerSync <TMessage> handler)
     where TMessage : class
 {
     handlerBuilder.Handle((message, _) =>
     {
         handler(message);
         return(Task.FromResult(0));
     });
 }
Beispiel #5
0
        internal CoreRouter(IHandlerBuilder content, IEnumerable <IConcernBuilder> concerns, bool development)
        {
            Content = Concerns.Chain(this, concerns, (p) => content.Build(p));

            Template = Placeholders.Template <TemplateModel>(Data.FromResource("Template.html"))
                       .Build();

            ErrorRenderer = Placeholders.Template <ErrorModel>(Data.FromResource(development ? "ErrorStacked.html" : "Error.html"))
                            .Build();
        }
        public VirtualHostRouterBuilder Add(string host, IHandlerBuilder handler)
        {
            if (_Hosts.ContainsKey(host))
            {
                throw new InvalidOperationException("A host with this name has already been added");
            }

            _Hosts.Add(host, handler);
            return(this);
        }
 internal static IHandlerBuilder <CommandMessage <TMessage> > DenyAnonymous <TMessage>(
     this IHandlerBuilder <CommandMessage <TMessage> > handlerBuilder)
 {
     return(handlerBuilder.Pipe(next => (message, ct) =>
     {
         if (message.RequestUser.Identity.IsAuthenticated)
         {
             throw new InvalidOperationException("Not authenticated");
         }
         return next(message, ct);
     }));
 }
Beispiel #8
0
 public static IHandlerBuilder <T> ConnectionTimeoutRetry <T>(
     this IHandlerBuilder <T> handlerBuilder)
     where T : class
 {
     return(handlerBuilder.Pipe(next => (message, ct) =>
     {
         return Policy.Handle <TimeoutException>()
         .RetryForeverAsync(ex =>
         {
             /* log message, system warning etc */
         })
         .ExecuteAsync(() => next(message, ct));
     }));
 }
 internal static IHandlerBuilder <TMessage> LogExceptions <TMessage>(this IHandlerBuilder <TMessage> handleBuilder)
 {
     return(handleBuilder.Pipe(next => async(message, ct) =>
     {
         try
         {
             await next(message, ct);
         }
         catch (Exception ex)
         {
             //logger.ErrorException("Exception occured while blah blah", ex);
             throw;
         }
     }));
 }
 internal static IHandlerBuilder <TMessage> PerformanceCounter <TMessage>(this IHandlerBuilder <TMessage> handleBuilder)
 {
     return(handleBuilder.Pipe(next => async(message, ct) =>
     {
         var startNew = Stopwatch.StartNew();
         try
         {
             await next(message, ct);
         }
         finally
         {
             var elapsed = startNew.ElapsedMilliseconds;
             // output perf counter
         }
     }));
 }
Beispiel #11
0
        private void LoadClient(ServiceProvider serviceProvider)
        {
            _handlerBuilder = new RomanApp.Controller.Bootstrap().GetBuilder(_serviceProvider);
            _handlerBuilder.SQLiteStorage("sqlite")
            .Location(Windows.Storage.ApplicationData.Current.LocalFolder.Path)
            .Add();

            Reedoo.NET.Client.Builder.ClientBuilder builder =
                new Reedoo.NET.Client.Builder.ClientBuilder(serviceProvider);
            builder.AddAssembly(GetType().Assembly);
            builder.NewApp(APP_NAME)
            .AddAssembly(GetType().Assembly)
            .AddAssembly(typeof(BackInput).Assembly)
            .Add();

            _uwpClient = builder.BuildUWPClient();
            //_uwpClient.CredentialArrived += UWPClient_CredentialArrived;
        }
Beispiel #12
0
        public IHandlerBuilder GetBuilder(ServiceProvider serviceProvider)
        {
            IHandlerBuilder retval = null;

            retval = serviceProvider.GetService <IHandlerBuilder>();
            retval.EnableLocalBinding(true)
            .Set();

            retval.NewApp("RomanApp")
            .AddAssembly(GetType().Assembly)
            .AddAssembly(typeof(BackInput).Assembly)
            .NewRoomDefinition(EventType.Offline).SetHandlerType(typeof(RomanAppRoomHandler)).Add()
            .NewRoom().SetId(ROOM_ID).SetRoomType(EventType.Offline).SetName(ROOM_ID).Add()

            .Add();

            return(retval);
        }
Beispiel #13
0
        public WebsiteRouter(IHandler parent,
                             IHandlerBuilder content,
                             IEnumerable <IConcernBuilder> concerns,
                             IHandlerBuilder scripts,
                             IHandlerBuilder styles,
                             IResourceProvider?favicon,
                             IMenuProvider?menu,
                             ITheme theme)
        {
            Parent = parent;

            var layout = Layout.Create()
                         .Add("scripts", scripts)
                         .Add("styles", styles)
                         .Add("sitemap.xml", Sitemap.Create())
                         .Add("robots.txt", BotInstructions.Default().Sitemap())
                         .Fallback(content);

            foreach (var concern in concerns)
            {
                layout.Add(concern);
            }

            if (favicon != null)
            {
                layout.Add("favicon.ico", Download.From(favicon).Type(ContentType.ImageIcon));
            }

            if (theme.Resources != null)
            {
                layout.Add("resources", theme.Resources);
            }

            Handler = layout.Build(this);

            Theme = theme;

            Menu = menu ?? Websites.Menu.Create((r, _) => GetContent(r)).Build();

            var scriptRouter = (ScriptRouter)scripts.Build(this);
            var styleRouter  = (StyleRouter)styles.Build(this);

            Renderer = new WebsiteRenderer(Theme, Menu, scriptRouter, styleRouter);
        }
Beispiel #14
0
        private ClientBuilder LoadClientBuilder(ServiceProvider serviceProvider)
        {
            ClientBuilder retval = null;

            _handlerBuilder = new RomanApp.Controller.Bootstrap().GetBuilder(_serviceProvider);

            _handlerBuilder.SQLiteStorage("sqlite")
            .Location(Environment.GetFolderPath(Environment.SpecialFolder.Personal))
            .Add();

            retval = new ClientBuilder(serviceProvider);
            retval.AddAssembly(GetType().Assembly);
            retval.NewApp(APP_NAME)
            .AddAssembly(GetType().Assembly)
            .AddAssembly(typeof(BackInput).Assembly)
            .Add();

            return(retval);
        }
        public static ICreateHandlerBuilder HandleQuery <TInput, TOutput>(
            this IHandlerBuilder <QueryMessage <TInput, TOutput> > handler, Func <TInput, CancellationToken, Task <TOutput> > query)
        {
            return(handler.Handle(async(message, ct) =>
            {
                try
                {
                    var result = await query(message.Input, ct);

                    if (ct.IsCancellationRequested)
                    {
                        message.Source.TrySetCanceled();
                    }
                    else
                    {
                        message.Source.TrySetResult(result);
                    }
                }
                catch (Exception ex)
                {
                    message.Source.TrySetException(ex);
                }
            }));
        }
Beispiel #16
0
 /// <summary>
 /// 初始化一个新的默认微信处理程序。
 /// </summary>
 /// <param name="builder">处理构造者。</param>
 public DefaultWeiXinHandler(IHandlerBuilder builder)
 {
     _builder = builder;
 }
Beispiel #17
0
 public LayoutBuilder Fallback(IHandlerBuilder handler)
 {
     _Fallback = handler;
     return(this);
 }
 internal static IHandlerBuilder <CommandMessage <TMessage> > ValidateWith <TMessage>(
     this IHandlerBuilder <CommandMessage <TMessage> > handlerBuilder, object validator)
 {
     return(handlerBuilder);
 }
Beispiel #19
0
 public LayoutBuilder Add(string name, IHandlerBuilder handler)
 {
     Handlers.Add(name, handler);
     return(this);
 }
 internal static IHandlerBuilder <CommandMessage <TMessage> > RequiresClaim <TMessage>(
     this IHandlerBuilder <CommandMessage <TMessage> > handlerBuilder,
     Func <Claim, bool> claimPredicate)
 {
     return(handlerBuilder);
 }
Beispiel #21
0
 /// <summary>
 /// 初始化一个新的默认微信处理程序。
 /// </summary>
 /// <param name="builder">处理构造者。</param>
 public DefaultHandler(IHandlerBuilder builder, Action <object, EventMsg> registerMiddlewareEventCall = null)
 {
     _builder = builder;
     _registerMiddlewareEventCall = registerMiddlewareEventCall;
 }
Beispiel #22
0
 public GildedRose(IList <Item> items, IHandlerBuilder handlerBuilder)
 {
     _items          = items ?? throw new ArgumentNullException(nameof(items));
     _handlerBuilder = handlerBuilder;
 }
 /// <summary>
 /// Sets the logo of the application which will be shown
 /// in the upper left corner of rendered web pages.
 /// </summary>
 /// <param name="provider">A handler which will return a PNG logo to be displayed</param>
 /// <example>
 /// Logo(Download.FromFile("./images/mylogo.png"))
 /// </example>
 public AdminLteBuilder Logo(IHandlerBuilder provider)
 {
     _Logo = provider;
     return(this);
 }
 /// <summary>
 /// 使用一个处理中间件。
 /// </summary>
 /// <typeparam name="T">处理中间件类型。</typeparam>
 /// <param name="builder">处理构造者。</param>
 /// <param name="args">参数。</param>
 /// <returns>处理构造者。</returns>
 public static IHandlerBuilder Use <T>(this IHandlerBuilder builder, params object[] args) where T : HandlerMiddleware
 {
     return(builder.Use((HandlerMiddleware)Activator.CreateInstance(typeof(T)), args));
 }
 public static Upstream Create(IHandlerBuilder handler)
 {
     return(new Upstream(TestRunner.NextPort(), handler));
 }
Beispiel #26
0
 public IServerBuilder Handler(IHandlerBuilder handler)
 {
     _Handler = handler;
     return(this);
 }
Beispiel #27
0
 public IServerHost Handler(IHandlerBuilder handler)
 {
     _Builder.Handler(handler); return(this);
 }
Beispiel #28
0
 /// <summary>
 /// 初始化一个新的默认微信处理程序。
 /// </summary>
 /// <param name="builder">处理构造者。</param>
 public DefaultWeiXinHandler(IHandlerBuilder builder)
 {
     _builder = builder;
 }
Beispiel #29
0
 public WebsiteBuilder Content(IHandlerBuilder content)
 {
     _Content = content;
     return(this);
 }
Beispiel #30
0
 /// <summary>
 /// 使用一个处理中间件。
 /// </summary>
 /// <typeparam name="T">处理中间件类型。</typeparam>
 /// <param name="builder">处理构造者。</param>
 /// <param name="args">参数。</param>
 /// <returns>处理构造者。</returns>
 public static IHandlerBuilder Use <T>(this IHandlerBuilder builder, params object[] args) where T : HandlerMiddleware
 {
     return(builder.Use(typeof(T), args));
 }
 public VirtualHostRouterBuilder Default(IHandlerBuilder handler)
 {
     _DefaultRoute = handler;
     return(this);
 }