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(); }
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(); }
// 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(); }
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."); }
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); }
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(); }
// 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."); }