public WebApplicationRegistry(IRemoteController controller, StorytellerContext context)
        {
            For<ISpecFileWatcher>().Use<SpecFileWatcher>();
            For<IRemoteController>().Use(controller);
            For<StorytellerContext>().Use(context);
            ForSingletonOf<IClientConnector>().Use<ClientConnector>();
            ForSingletonOf<AssetFileWatcher>().Use<AssetFileWatcher>();

            ForSingletonOf<IPersistenceController>().Use<PersistenceController>();

            For<ILogger>().Use<Logger>();
            For<ILogListener>().Use<ExceptionListener>();

            For<IActivator>().Add<ClientConnectorActivator>();
            For<IActivator>().Add<StartWatchingFilesActivator>();
            For<IActivator>().Add<StartWatchingAssets>();

            Scan(x =>
            {
                x.AssemblyContainingType<ICommand>();
                x.AssemblyContainingType<OpenInput>();

                x.AddAllTypesOf<ICommand>();
            });
        }
Esempio n. 2
0
 public HomeEndpoint(IClientConnector connector, StorytellerContext context, IPersistenceController persistence, IApplicationFiles files)
 {
     _connector   = connector;
     _context     = context;
     _persistence = persistence;
     _files       = files;
 }
        public void Start()
        {
            _controller = _input.BuildRemoteController();
            var context = new StorytellerContext(_controller, _input);

            if (_controller.BinPath.IsEmpty())
            {
                throw new Exception("Could not determine any BinPath for the testing AppDomain. Has the Storyteller specification project been compiled, \nor is Storyteller using the wrong compilation target maybe?\n\ntype 'st.exe ? open' or st.exe ? run' to see the command usages\n\n");
            }

            context.Start();

            var registry = new FubuRegistry();


            registry.AlterSettings <DiagnosticsSettings>(_ => _.TraceLevel = TraceLevel.Verbose);
            registry.Mode = "development";
            registry.HostWith <NOWIN>();
            registry.Services.For <IRemoteController>().Use(_controller);
            registry.Services.For <StorytellerContext>().Use(context);

            registry.Services.IncludeRegistry <WebApplicationRegistry>();


            _server = registry.ToRuntime();
        }
        public void Start()
        {
            _controller = _input.BuildRemoteController();
            var context = new StorytellerContext(_controller, _input);

            if (_controller.BinPath.IsEmpty())
            {
                throw new Exception("Could not determine any BinPath for the testing AppDomain. Has the Storyteller specification project been compiled, \nor is Storyteller using the wrong compilation target maybe?\n\ntype 'st.exe ? open' or st.exe ? run' to see the command usages\n\n");
            }

            context.Start();

            var registry = new FubuRegistry();


            registry.AlterSettings<DiagnosticsSettings>(_ => _.TraceLevel = TraceLevel.Verbose);
            registry.Mode = "development";
            registry.HostWith<NOWIN>();
            registry.Services.For<IRemoteController>().Use(_controller);
            registry.Services.For<StorytellerContext>().Use(context);
            
            registry.Services.IncludeRegistry<WebApplicationRegistry>();


            _server = registry.ToRuntime();
        }
Esempio n. 5
0
 public HomeEndpoint(IClientConnector connector, StorytellerContext context, FubuHtmlDocument document, IPersistenceController persistence, IAssetTagBuilder tags, IFubuApplicationFiles files)
 {
     _connector = connector;
     _context = context;
     _document = document;
     _persistence = persistence;
     _tags = tags;
     _files = files;
 }
Esempio n. 6
0
 public HomeEndpoint(IClientConnector connector, StorytellerContext context, FubuHtmlDocument document,
                     IPersistenceController persistence, IAssetTagBuilder tags, IFubuApplicationFiles files)
 {
     _connector   = connector;
     _context     = context;
     _document    = document;
     _persistence = persistence;
     _tags        = tags;
     _files       = files;
 }
        public void Start()
        {
            _controller = _input.BuildRemoteController();
            var context = new StorytellerContext(_controller, _input);

            var container = new Container(new WebApplicationRegistry(_controller, context));

            context.Start();

            var registry = new FubuRegistry();
            registry.AlterSettings<DiagnosticsSettings>(_ => _.TraceLevel = TraceLevel.Verbose);

            _server = FubuApplication.For(registry).StructureMap(container).RunEmbeddedWithAutoPort();
        }
        public void Start()
        {
            Controller = _input.BuildRemoteController();
            var context = new StorytellerContext(Controller, _input);

            Controller.AssertValid();


            context.Start();

            var port = PortFinder.FindPort(5000);

            if (_input.WebSocketAddressFlag.IsNotEmpty())
            {
                port = new Uri(_input.WebSocketAddressFlag).Port;
            }


            BaseAddress = "http://localhost:" + port;

            var webSockets = new WebSocketsHandler();


            var webSocketsAddress = $"ws://127.0.0.1:{port}";

            // TODO -- fugly as hell. Either do it all the SM way, or rip out SM
            var registry = new WebApplicationRegistry(webSocketsAddress, webSockets, Controller, context);

            _container = new Container(registry);



            var baseDirectory = AppContext.BaseDirectory;
            var host          = new WebHostBuilder()
                                .UseKestrel()
                                .UseContentRoot(baseDirectory)
                                .UseUrls($"http://localhost:{port}")
                                .Configure(app =>
            {
                app.UseWebSockets();

                app.Use(async(http, next) =>
                {
                    if (http.WebSockets.IsWebSocketRequest)
                    {
                        await webSockets.HandleSocket(http).ConfigureAwait(false);
                    }
                    else
                    {
                        await next().ConfigureAwait(false);
                    }
                });

                app.UseStaticFiles(new StaticFileOptions
                {
                    ServeUnknownFileTypes = true,
                    FileProvider          = new PhysicalFileProvider(baseDirectory)
                });

                app.Run(async(http) =>
                {
                    var endpoint = _container.GetInstance <HomeEndpoint>();
                    var html     = endpoint.Index().ToString();

                    http.Response.ContentType = "text/html";
                    await http.Response.WriteAsync(html).ConfigureAwait(false);
                });
            });

            _server = host.Start();


            Controller.AddListener(_container.GetInstance <IClientConnector>());

            _container.GetInstance <AssetFileWatcher>().Start();

            var persistence = _container.GetInstance <IPersistenceController>();

            persistence.StartWatching(context.SpecPath);
            context.AddRemoteListener(persistence);
        }
Esempio n. 9
0
 public HomeEndpoint(IClientConnector connector, StorytellerContext context, IPersistenceController persistence)
 {
     _connector   = connector;
     _context     = context;
     _persistence = persistence;
 }
        public WebApplicationRegistry(string webSocketAddress, WebSocketsHandler webSockets, IRemoteController controller, StorytellerContext context)
        {
            For <StorytellerContext>().Use(context);
            For <IRemoteController>().Use(controller);

            ForSingletonOf <IClientConnector>()
            .Use <ClientConnector>()
            .SetProperty(x => x.WebSocketsAddress = webSocketAddress);

            For <WebSocketsHandler>().Use(webSockets);

            For <ISpecFileWatcher>().Use <SpecFileWatcher>();

            ForSingletonOf <AssetFileWatcher>().Use <AssetFileWatcher>();


            ForSingletonOf <IPersistenceController>().Use <PersistenceController>();

            For <IApplicationFiles>().Use(new ApplicationFiles(Directory.GetCurrentDirectory()));

            Scan(x =>
            {
                x.AssemblyContainingType <ICommand>();
                x.AssemblyContainingType <OpenInput>();

                x.AddAllTypesOf <ICommand>();
            });
        }
Esempio n. 11
0
 public StartWatchingFilesActivator(IPersistenceController controller, StorytellerContext context)
 {
     _controller = controller;
     _context    = context;
 }
 public StartWatchingFilesActivator(IPersistenceController controller, StorytellerContext context)
 {
     _controller = controller;
     _context = context;
 }