예제 #1
0
		public HttpServer(IRavenHttpConfiguration configuration, DocumentDatabase resourceStore)
		{
			DefaultResourceStore = resourceStore;
			DefaultConfiguration = configuration;

			configuration.Container.SatisfyImportsOnce(this);

			foreach (var responder in RequestResponders)
			{
				responder.Value.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
			}

			switch (configuration.AuthenticationMode.ToLowerInvariant())
			{
				case "windows":
					requestAuthorizer = new WindowsRequestAuthorizer();
					break;
				case "oauth":
					requestAuthorizer = new OAuthRequestAuthorizer();
					break;
				default:
					throw new InvalidOperationException(
						string.Format("Unknown AuthenticationMode {0}. Options are Windows and OAuth", configuration.AuthenticationMode));
			}

			requestAuthorizer.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
			RemoveTenantDatabase.Occured.Subscribe(TenantDatabaseRemoved);
		}
예제 #2
0
		public HttpServer(InMemoryRavenConfiguration configuration, DocumentDatabase resourceStore)
		{
			HttpEndpointRegistration.RegisterHttpEndpointTarget();

			DefaultResourceStore = resourceStore;
			DefaultConfiguration = configuration;

			int val;
			if (int.TryParse(configuration.Settings["Raven/Tenants/MaxIdleTimeForTenantDatabase"], out val) == false)
				val = 900;
			maxTimeDatabaseCanBeIdle = TimeSpan.FromSeconds(val);
			if (int.TryParse(configuration.Settings["Raven/Tenants/FrequnecyToCheckForIdleDatabases"], out val) == false)
				val = 60;
			frequnecyToCheckForIdleDatabases = TimeSpan.FromSeconds(val);

			configuration.Container.SatisfyImportsOnce(this);

			foreach (var responder in RequestResponders)
			{
				responder.Value.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
			}

			switch (configuration.AuthenticationMode.ToLowerInvariant())
			{
				case "windows":
					requestAuthorizer = new WindowsRequestAuthorizer();
					break;
				case "oauth":
					requestAuthorizer = new OAuthRequestAuthorizer();
					break;
				default:
					throw new InvalidOperationException(
						string.Format("Unknown AuthenticationMode {0}. Options are Windows and OAuth", configuration.AuthenticationMode));
			}

			requestAuthorizer.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
		}
예제 #3
0
		public HttpServer(InMemoryRavenConfiguration configuration, DocumentDatabase resourceStore)
		{
			HttpEndpointRegistration.RegisterHttpEndpointTarget();

			if (configuration.RunInMemory == false)
			{
				TryCreateDirectory(configuration.PluginsDirectory);
				TryCreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Analyzers"));
			}

			SystemDatabase = resourceStore;
			SystemConfiguration = configuration;

			int val;
			if (int.TryParse(configuration.Settings["Raven/Tenants/MaxIdleTimeForTenantDatabase"], out val) == false)
				val = 900;
			maxTimeDatabaseCanBeIdle = TimeSpan.FromSeconds(val);
			if (int.TryParse(configuration.Settings["Raven/Tenants/FrequnecyToCheckForIdleDatabases"], out val) == false)
				val = 60;
			frequnecyToCheckForIdleDatabases = TimeSpan.FromSeconds(val);

			configuration.Container.SatisfyImportsOnce(this);

			InitializeRequestResponders(SystemDatabase);

			requestAuthorizer = new MixedModeRequestAuthorizer();

			requestAuthorizer.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
		}