using System; using System.Reflection; using Luticate2.Utils.Controllers; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using VDS.RDF.Query; using WebApiWebSem.Business; using WebApiWebSem.DataAccess; using WebApiWebSem.Dbo; using WebApiWebSem.Middleware; namespace WebApiWebSem { public class Startup { public IHostingEnvironment Env { get; } public Startup(IHostingEnvironment env) { Env = env; var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); if (env.IsEnvironment("Development")) { // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately. builder.AddApplicationInsightsSettings(developerMode: true); } builder.AddEnvironmentVariables(); Configuration = builder.Build(); } public IConfigurationRoot Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container public void ConfigureServices(IServiceCollection services) { var version = typeof(Startup).GetTypeInfo().Assembly.GetName().Version; services.AddLuticateUtils(options => options.Version = version + "-dev"); services.AddTransient(); services.AddTransient(); services.AddTransient(provider => new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org")); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.Configure(dbo => { dbo.SleepTime = Env.IsProduction() ? 0 : int.Parse(Configuration["SleepTime"]); dbo.FeedUrl = Configuration["FeedUrl"]; }); services.AddDbContext(options => { options.UseNpgsql(Configuration.GetConnectionString("default")); options.UseInternalServiceProvider(new ServiceCollection() .AddEntityFrameworkNpgsqlLuticate() .AddEntityFrameworkNpgsql() .BuildServiceProvider()); }, ServiceLifetime.Transient); services.AddMvc() .AddLuticateUtils(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseLuticateUtils(); if (Env.IsDevelopment()) { app.UseMiddleware(); } app.UseMvc(); } } }