예제 #1
0
파일: Program.cs 프로젝트: codejr/finbot
        public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostContext, config) =>
        {
            var env = hostContext.HostingEnvironment;

            config.AddEnvironmentVariables();

            if (env.IsDevelopment())
            {
                var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
                if (appAssembly != null)
                {
                    config.AddUserSecrets(appAssembly, optional: true);
                }
            }
        })
        .ConfigureServices((hostContext, services) =>
        {
            var config = hostContext.Configuration;

            var db = new FinbotDataContext(config.GetValue <string>("database:name"));

            db.Database.Migrate();

            services.AddSingleton <IPortfolioService, PortfolioService>();

            services.AddSingleton(db);

            services.AddSingleton <DiscordSocketClient>();

            services.AddSingleton <CommandService>();

            services.AddTransient <IFinDataClient, FinDataClient>(
                serviceManager =>
            {
                var restCLient = new RestClient(config.GetValue <string>("iex:uri"))
                {
                    Authenticator = new TokenAuthenticator(config.GetValue <string>("iex:token"))
                };

                return(new FinDataClient(restCLient, serviceManager.GetService <ILogger>()));
            });

            services.AddTransient <IFinbotBrain, FinbotBrain>(
                serviceManager =>
            {
                var token = config.GetValue <string>("discord:token");

                return(new FinbotBrain(token, serviceManager));
            });

            services.AddHostedService <FinbotService>();
        });
예제 #2
0
 private async Task <PortfolioService> CreatePortfolioServiceAsync(FinbotDataContext ctx = null)
 {
     return(new PortfolioService(null, ctx ?? await CreateContext()));
 }
예제 #3
0
 public PortfolioService(IFinDataClient client, FinbotDataContext db)
 {
     this.client = client;
     this.db     = db;
 }