public static ConreignApi Create(ConreignApiConfiguration apiConfiguration) { if (apiConfiguration == null) { throw new ArgumentNullException(nameof(apiConfiguration)); } var loggerConfiguration = new LoggerConfiguration(); if (!string.IsNullOrEmpty(apiConfiguration.ElasticSearchUri)) { var elasticOptions = new ElasticsearchSinkOptions(new Uri(apiConfiguration.ElasticSearchUri)) { AutoRegisterTemplate = true, BufferBaseFilename = "logs/elastic-buffer" }; loggerConfiguration.WriteTo.Elasticsearch(elasticOptions); } var logger = loggerConfiguration .WriteTo.LiterateConsole() .WriteTo.RollingFile(Path.Combine(ApplicationPath.CurrentDirectory, "logs", "conreign-api-{Date}.log")) .MinimumLevel.Is(apiConfiguration.MinimumLogLevel) .Enrich.FromLogContext() .CreateLogger() .ForContext(new [] { new PropertyEnricher("ApplicationId", "Conreign.Api"), new PropertyEnricher("ClusterId", apiConfiguration.ClusterId), new PropertyEnricher("InstanceId", apiConfiguration.InstanceId) }); return(new ConreignApi(apiConfiguration, logger)); }
public static IAppBuilder MapConreignApi( this IAppBuilder builder, IOrleansClientInitializer initializer, ConreignApiConfiguration configuration) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (initializer == null) { throw new ArgumentNullException(nameof(initializer)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var container = new Container(); container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); container.RegisterConreignApi(initializer, configuration); var hubConfiguration = ConfigureSignalR(container); builder.UseWelcomePage("/"); builder.MapSignalR <SimpleInjectorHubDispatcher>("/$/api", hubConfiguration); return(builder); }
public static Container RegisterConreignApi(this Container container, IOrleansClientInitializer initializer, ConreignApiConfiguration configuration) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (initializer == null) { throw new ArgumentNullException(nameof(initializer)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } container.Register(() => Log.Logger.ForContext("ApplicationId", "Conreign.Api"), Lifestyle.Singleton); container.Register(() => OrleansClient.Initialize(initializer).Result, Lifestyle.Singleton); container.Register <GameHubCountersCollection>(Lifestyle.Singleton); container.RegisterCollection <HubPipelineModule>(new[] { Assembly.GetExecutingAssembly() }); RegisterHubs(container); container.RegisterSingleton(new SlowConnectionBehaviourOptions(TimeSpan.FromSeconds(3))); container.RegisterClientHandlerFactory(c => { // c.Behaviours.Add(typeof(SlowConnectionBehaviour<,>)); }); return(container); }
public override bool OnStart() { ServicePointManager.DefaultConnectionLimit = 20; var env = CloudConfigurationManager.GetSetting("Environment"); if (string.IsNullOrEmpty(env)) { throw new InvalidOperationException("Unable to determine environment."); } var config = ConreignApiConfiguration.Load(Environment.CurrentDirectory, env); var endpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["PublicApi"]; Api = ConreignApi.Create(config); Log.Logger = Api.Logger; // Starting appplication var baseUri = $"{endpoint.Protocol}://{endpoint.IPEndpoint}"; _app = WebApp.Start <Startup>(baseUri); Log.Logger.Information("Conreign API ({Environment}) is started at {BaseUri}", Api.Configuration.Environment, baseUri); return(base.OnStart()); }
public static IDisposable Run(string[] args) { var apiConfiguration = ConreignApiConfiguration.Load(ApplicationPath.CurrentDirectory, args); var api = ConreignApi.Create(apiConfiguration); var logger = api.Logger; Log.Logger = logger; try { logger.Information("Starting API..."); var host = apiConfiguration.IsLocalEnvironment ? "localhost" : "*"; var url = $"http://{host}:{apiConfiguration.Port}"; Startup.Api = api; var webApp = WebApp.Start <Startup>(url); logger.Information($"API is running at {url}."); return(webApp); } catch (Exception ex) { logger.Fatal(ex, "Failed to start API."); throw; } }
private ConreignApi(ConreignApiConfiguration apiConfiguration, ILogger logger) { Configuration = apiConfiguration; Logger = logger; }