Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.18 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using FluentScheduler ;
  6. using Grpc.Core;
  7. using Microsoft.EntityFrameworkCore;
  8. using Microsoft.Extensions.Configuration;
  9. using Microsoft.Extensions.DependencyInjection ;
  10. using Microsoft.Extensions.DependencyInjection.Extensions;
  11. using Microsoft.Extensions.Logging ;
  12. using Microsoft.Extensions.Options;
  13. using NLog ;
  14. using NLog.Extensions.Logging ;
  15. using SimpleInjector;
  16. using Socialforce.Common;
  17. using Socialforce.Service.Core ;
  18. using Socialforce.Service.Data;
  19. using Socialforce.Service.Jobs ;
  20. using SocialforceService;
  21. using ILogger = Microsoft.Extensions.Logging.ILogger ;
  22.  
  23. namespace Socialforce.Service
  24. {
  25.     public class Program
  26.     {
  27.         private static Logger Logger = LogManager.GetCurrentClassLogger ();
  28.         private static ManualResetEvent resetEvent = new ManualResetEvent(false);
  29.  
  30.         const int Port = 50051;
  31.         private static Container _container;
  32.  
  33.         static void Main(string[] args)
  34.         {
  35.             var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
  36.            
  37.             var services = new ServiceCollection ();
  38.             services.AddLogging ();
  39.             var provider = services.BuildServiceProvider ();
  40.  
  41.             var factory = provider.GetService<ILoggerFactory> ();
  42.             factory.AddNLog ();
  43.             factory.ConfigureNLog ("nlog.config");
  44.  
  45.             //var logger = provider.GetService<ILogger<Program>> ();
  46.             //logger.LogCritical ("hello nlog");
  47.  
  48.             Logger.Debug("Test: " + Directory.GetCurrentDirectory());
  49.  
  50.             var builder = new ConfigurationBuilder()
  51.                 .SetBasePath(Directory.GetCurrentDirectory())
  52.                 .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
  53.                 .AddJsonFile($"appsettings.{environmentName}.json", optional: true);
  54.  
  55.             IConfigurationRoot configuration = builder.Build();
  56.             //services.Configure<DigitalOceanSpacesConfig>();
  57.  
  58.             Logger.Debug("Test: "+ configuration.GetConnectionString("DefaultConnection"));
  59.             var dbContextBuilder = new DbContextOptionsBuilder();
  60.             dbContextBuilder.UseNpgsql(configuration.GetConnectionString("DefaultConnection"));
  61.  
  62.             _container = new Container
  63.             {
  64.                 Options =
  65.                 {
  66.                     SuppressLifestyleMismatchVerification = true
  67.                 }
  68.             };
  69.             IocContainer.Instance.Container = _container ;
  70.             _container.Register<SocialforceServiceImpl>();
  71.             _container.RegisterSingleton<ISessionStorage, SessionStorage>();
  72.             _container.RegisterSingleton<IRequestLogger, RequestLogger>();
  73.             _container.RegisterSingleton (()=>new DbContextFactory(dbContextBuilder.Options));
  74.             _container.RegisterSingleton<AccountActivityLogger> ();
  75.             _container.RegisterSingleton<SocialClientFactory>();
  76.             _container.RegisterSingleton<AccountManager>();
  77.             _container.Register<DigitaloceanSpacesService>(() =>
  78.             {
  79.                 var doConfig = new DigitalOceanSpacesConfig
  80.                 {
  81.                     Bucket = configuration["DigitalOceanSpaces:Bucket"],
  82.                     ServiceUrl = configuration["DigitalOceanSpaces:ServiceUrl"],
  83.                     Secret = configuration["DigitalOceanSpaces:Secret"],
  84.                     Key = configuration["DigitalOceanSpaces:Key"],
  85.                 };
  86.                 return new DigitaloceanSpacesService(doConfig);
  87.             });
  88.  
  89.             Server server = new Server
  90.             {
  91.                 Services = { SocialforceService.SocialforceService.BindService(_container.GetInstance<SocialforceServiceImpl>()) },
  92.                 Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
  93.             };
  94.             server.Start();
  95.  
  96.             JobManager.Initialize (new UnitRegistry());
  97.  
  98.             Logger.Debug ($"Started, port: {Port}, env:{environmentName}");
  99.  
  100.             resetEvent.WaitOne();
  101.  
  102.             Logger.Debug("Shutting down");
  103.             server.ShutdownAsync().Wait();
  104.         }
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement