123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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<ArticlesBusiness>();
- services.AddTransient<ArticlesDataAccess>();
- services.AddTransient(provider => new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org"));
- services.AddTransient<DbPediaDataAccess>();
-
- services.AddTransient<FeedBusiness>();
- services.AddTransient<FeedDataAccess>();
-
- services.Configure<AppConfigDbo>(dbo =>
- {
- dbo.SleepTime = Env.IsProduction() ? 0 : int.Parse(Configuration["SleepTime"]);
- dbo.FeedUrl = Configuration["FeedUrl"];
- });
-
- services.AddDbContext<WsDbContext>(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<SleepMiddleware>();
- }
-
- app.UseMvc();
- }
- }
- }
|