public ChutzpahWebServerHost CreateServer(ChutzpahWebServerConfiguration configuration)
        {
            if (ChutzpahWebServerHost.ActiveWebServer != null && ChutzpahWebServerHost.ActiveWebServer.RootPath.Equals(configuration.RootPath, StringComparison.OrdinalIgnoreCase))
            {
                // If the requested server is already running just re-use it
                return(ChutzpahWebServerHost.ActiveWebServer);
            }

            var hostConfiguration = new HostConfiguration
            {
                RewriteLocalhost = true,
                UrlReservations  = new UrlReservations {
                    CreateAutomatically = true
                }
            };

            var port = GetNextAvailablePort(configuration.DefaultPort.Value);
            var builtInDependencyFolder = fileProbe.BuiltInDependencyDirectory;

            ChutzpahTracer.TraceInformation("Creating Web Server Host at path {0} and port {1}", configuration.RootPath, port);

            var host = new NancyHost(new Uri(string.Format("http://localhost:{0}", port)), new NancySettingsBootstrapper(configuration.RootPath, builtInDependencyFolder), hostConfiguration);

            host.Start();
            var chutzpahWebServerHost = ChutzpahWebServerHost.Create(host, configuration.RootPath, port);

            return(chutzpahWebServerHost);
        }
 public ChutzpahWebServerConfiguration(ChutzpahWebServerConfiguration configurationToCopy)
 {
     Enabled            = configurationToCopy.Enabled;
     DefaultPort        = configurationToCopy.DefaultPort;
     RootPath           = configurationToCopy.RootPath;
     FileCachingEnabled = configurationToCopy.FileCachingEnabled;
 }
        public IChutzpahWebServerHost CreateServer(ChutzpahWebServerConfiguration configuration, IChutzpahWebServerHost activeWebServerHost)
        {
            if (activeWebServerHost != null &&
                activeWebServerHost.IsRunning &&
                activeWebServerHost.RootPath.Equals(configuration.RootPath, StringComparison.OrdinalIgnoreCase))
            {
                // If the requested server is already running just re-use it
                return(activeWebServerHost);
            }

            var builtInDependencyFolder = fileProbe.BuiltInDependencyDirectory;


            return(BuildHost(configuration.RootPath, configuration.DefaultPort.Value, builtInDependencyFolder));
        }