예제 #1
0
        public void Host_StartupOk_RespondsOnHttpRequest()
        {
            const string content = "<h1>Test</h1>";

            var options = new StonehengeHostOptions
            {
                Title = "Test"
            };
            var loader = new TestResourceLoader(content);
            var host   = new KestrelHost(loader, options);

            var startOk = host.Start("localhost", 32001);

            Assert.True(startOk, "Start failed");

            var response = string.Empty;

            try
            {
                using var client = new RedirectableWebClient();
                response         = client.DownloadString(host.BaseUrl);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, nameof(Host_StartupOk_RespondsOnHttpRequest));
            }

            Assert.Equal(content, response);
            host.Terminate();
        }
예제 #2
0
        private static void Main(string[] args)
        {
            Console.WriteLine(@"nossued website");

            // client framework (use Vue.js)
            var vue      = new VueResourceProvider();
            var provider = StonehengeResourceLoader.CreateDefaultLoader(vue);

            // options
            var options = new StonehengeHostOptions
            {
                Title          = "NOSSUED",
                StartPage      = "home",
                ServerPushMode = ServerPushModes.LongPolling,
                PollIntervalMs = 5000
            };

            // hosting
            var host = new KestrelHost(provider, options);

            if (!host.Start("localhost", 32000))
            {
                Console.WriteLine(@"Failed to start server on: " + host.BaseUrl);
                Environment.Exit(1);
            }

            // wait for user pressing Ctrl+C to terminate
            var terminate = new AutoResetEvent(false);

            Console.CancelKeyPress += (sender, eventArgs) => { terminate.Set(); };
            Console.WriteLine(@"Started server on: " + host.BaseUrl);
            terminate.WaitOne();
            Console.WriteLine(@"Server terminated.");
            host.Terminate();
        }
예제 #3
0
        // ReSharper disable once UnusedParameter.Local
        private static void Main(string[] args)
        {
            Console.WriteLine("Sample showing stonehenge on Chromely");

            // stonehenge backend
            var options = new StonehengeHostOptions
            {
                Title = "Demo"
            };
            var provider = StonehengeResourceLoader
                           .CreateDefaultLoader(new VueResourceProvider());
            var host = new KestrelHost(provider, options);

            if (!host.Start(options.Title, false, "localhost", 8888))
            {
                Console.WriteLine("Failed to start stonehenge server");
            }

            // ensure CEF runtime files are present
            var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) ?? ".";

            Directory.SetCurrentDirectory(path);
            try
            {
                CefRuntime.Load();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed to load runtime: " + ex.Message);
                Console.WriteLine("Installing CEF runtime from " + CefLoader.CefBuildsDownloadUrl);
                CefLoader.Load();
            }

            // chromely frontend
            var startUrl = host.BaseUrl;

            var config = ChromelyConfiguration
                         .Create()
                         .WithHostMode(WindowState.Normal, true)
                         .WithHostTitle(options.Title)
                         //.WithHostIconFile("chromely.ico")
                         .WithAppArgs(args)
                         .WithHostSize(1000, 600)
                         .WithStartUrl(startUrl);

            using (var window = new CefGlueBrowserWindow(config))
            {
                var exitCode = window.Run(args);
                if (exitCode != 0)
                {
                    Console.WriteLine("Failed to start chromely frontend: code " + exitCode);
                }
            }

            Console.WriteLine("Demo done.");
        }
        private static void Main()
        {
            Console.WriteLine("NOSSUED InfoScreenServer");

            var cfgFile  = Path.Combine(Application.GetApplicationDirectory(), "InfoScreen.cfg");
            var profile  = new Profile(cfgFile);
            var settings = new InfoSettings();

            var spp = new ClassPropertyProvider(settings);

            spp.SetProperties(profile["Event"].Properties);
            spp.SetProperties(profile["Twitter"].Properties);

            Console.WriteLine($"Event {settings.Name}, Keyword = {settings.Keywords}");


            var key    = ""; //Environment.GetEnvironmentVariable("twitter-key");
            var secret = ""; //Environment.GetEnvironmentVariable("twitter-secret");

            _client = new TwitterClient(settings);
            if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(secret))
            {
                Console.WriteLine("Missing twitter auth - start demo mode");
                var tweets = Path.Combine(Application.GetApplicationDirectory(), "DemoTweets.json");
                var json   = File.ReadAllText(tweets);
                _client.Tweets = JsonConvert.DeserializeObject <List <TwitterMessage> >(json);
            }
            else
            {
                _client.Connect(key, secret);
            }

            var vue      = new VueResourceProvider();
            var provider = StonehengeResourceLoader.CreateDefaultLoader(vue);

            provider.Services.AddService(typeof(TwitterClient), _client);
            provider.Services.AddService(typeof(InfoSettings), settings);

            var options = new StonehengeHostOptions
            {
                Title = settings.Name
            };
            var host = new KestrelHost(provider, options);

            host.Start("localhost", 32000);

            Process.Start(new ProcessStartInfo(host.BaseUrl)
            {
                UseShellExecute = true
            });

            Console.ReadLine();
            _client.Dispose();
        }
예제 #5
0
        private static void Main(string[] args)
        {
            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));

            var path = ApplicationInfo.ApplicationDirectory;

            Directory.SetCurrentDirectory(path);

            var settingsFile = new Profile(Path.Combine(path, "GitState.cfg"));

            new ProfileClassLoader().LoadClass(Settings, settingsFile);

            // Starting stonehenge backend
            var options = new StonehengeHostOptions
            {
                Title           = "GitState",
                StartPage       = "main",
                ServerPushMode  = ServerPushModes.LongPolling,
                PollIntervalSec = 10
            };
            var logger   = Logger.DefaultFactory.CreateLogger("GitState");
            var provider = StonehengeResourceLoader
                           .CreateDefaultLoader(logger, new VueResourceProvider(logger));
            var host = new KestrelHost(provider, options);

            if (!host.Start("localhost", 8880))
            {
                Console.WriteLine("Failed to start stonehenge server");
            }

            // Starting chromely frontend
            Console.WriteLine("Starting chromely frontend");
            var config = DefaultConfiguration.CreateForRuntimePlatform();

            config.CefDownloadOptions = new CefDownloadOptions(true, true);
            config.StartUrl           = host.BaseUrl;
            config.WindowOptions      = new WindowOptions
            {
                Title = "GitState",
                Size  = new WindowSize(Settings.WindowWidth, Settings.WindowHeight),
                RelativePathToIconFile = "GitState.ico"
            };
            config.DebuggingMode = true;

            AppBuilder
            .Create()
            .UseApp <ChromelyBasicApp>()
            .UseConfig <IChromelyConfiguration>(config)
            .Build()
            .Run(args);

            Console.ReadLine();
            Console.WriteLine("GitState done.");
        }
예제 #6
0
        static void Main(string[] args)
        {
            Console.WriteLine("SunSpec Explorer");

            var consoleListener = new ConsoleTraceListener();

            Trace.Listeners.Add(consoleListener);

            var options = new StonehengeHostOptions
            {
                Title          = "SunSpec Explorer",
                StartPage      = "explorer",
                ServerPushMode = ServerPushModes.LongPolling,
                PollIntervalMs = 5000
            };
            var vue      = new VueResourceProvider();
            var provider = StonehengeResourceLoader.CreateDefaultLoader(vue);

            //provider.Services.AddService(typeof(InformantEngine), _engine);

            var host = new KestrelHost(provider, options);

            if (!host.Start("localhost", 8080))
            {
                Console.WriteLine("Failed to start stonehenge server");
            }

            var config = DefaultConfiguration.CreateForRuntimePlatform();

            config.CefDownloadOptions = new CefDownloadOptions
            {
                AutoDownloadWhenMissing = true,
                DownloadSilently        = true
            };
            config.WindowOptions = new WindowOptions
            {
                Title = " ",
                //RelativePathToIconFile = "Informant.ico",
                Size = new WindowSize(
                    (int)(1000 * Display.GetScalingFactor()),
                    (int)(600 * Display.GetScalingFactor()))
            };
            config.DebuggingMode = true;
            config.StartUrl      = host.BaseUrl;

            AppBuilder
            .Create()
            .UseConfiguration <IChromelyConfiguration>(config)
            .UseApp <ChromelyBasicApp>()
            .Build()
            .Run(args);
        }
예제 #7
0
        public void Host_MultipleInstances_StartupOk_RespondsOnHttpRequest()
        {
            const string content1 = "<h1>Test 01</h1>";
            const string content2 = "<h1>Test II</h1>";

            var options = new StonehengeHostOptions
            {
                Title = "Test"
            };
            var loader1 = new TestResourceLoader(content1);
            var host1   = new KestrelHost(loader1, options);

            var startOk = host1.Start("localhost", 32002);

            Assert.True(startOk, "Start host1 failed");

            var loader2 = new TestResourceLoader(content2);
            var host2   = new KestrelHost(loader2, options);

            startOk = host2.Start("localhost", 32003);
            Assert.True(startOk, "Start host2 failed");

            Assert.NotEqual(host1.BaseUrl, host2.BaseUrl);

            var response1 = string.Empty;
            var response2 = string.Empty;

            try
            {
                using (var client = new RedirectableWebClient())
                {
                    response1 = client.DownloadString(host1.BaseUrl);
                }
                using (var client = new RedirectableWebClient())
                {
                    response2 = client.DownloadString(host2.BaseUrl);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, nameof(Host_MultipleInstances_StartupOk_RespondsOnHttpRequest));
                Assert.True(false, ex.Message);
            }

            Assert.Equal(content1, response1);
            Assert.Equal(content2, response2);

            host1.Terminate();
            host2.Terminate();
        }
예제 #8
0
        // ReSharper disable once UnusedParameter.Local
        private static void Main(string[] args)
        {
            Console.WriteLine("IctBaden.Modbus.SampleDevice");

            Trace.Listeners.Add(new TronTraceListener(true));

            var logger = Framework.Logging.Logger.DefaultFactory.CreateLogger("Modbus");

            var source = new TestData();
            var device = new ModbusSlave("Sample", source, 1502, 1);

            device.Start();

            var options = new StonehengeHostOptions
            {
                Title           = "Modbus",
                StartPage       = "device",
                ServerPushMode  = ServerPushModes.LongPolling,
                PollIntervalSec = 5
            };
            var vue      = new VueResourceProvider(logger);
            var provider = StonehengeResourceLoader.CreateDefaultLoader(logger, vue);

            provider.Services.AddService(typeof(TestData), source);
            provider.Services.AddService(typeof(ModbusSlave), device);

            var host = new KestrelHost(provider, options);

            if (!host.Start("*", 0))
            {
                Console.WriteLine("Failed to start stonehenge server");
                return;
            }

            var wnd = new HostWindow(host.BaseUrl, "Modbus", new Point(600, 800));

            if (!wnd.Open())
            {
                Console.WriteLine("Failed to open window");
            }

            Console.WriteLine("Done.");
        }