public ClickUpService(ClickUpConfig clickUpConfig, IDatabaseService databaseService, IHttpClientFactory httpClientFactory)
        {
            if (string.IsNullOrEmpty(clickUpConfig.AccessToken))
            {
                throw new ApplicationException("Access token cannot be null or empty");
            }

            _clickUpConfig     = clickUpConfig;
            _databaseService   = databaseService;
            _httpClientFactory = httpClientFactory;
        }
Exemplo n.º 2
0
        private static void RegisterServices(ClickUpConfig clickUpConfig, string databaseConnectionString)
        {
            var services = new ServiceCollection();             //again unusually for a console app, setting up DI, in order to support testing.

            services.AddSingleton(serviceProvider => clickUpConfig);
            services.AddTransient <ISyncService, SyncService>();
            services.AddTransient <IClickUpService, ClickUpService>();
            services.AddHttpClient();

            services.AddDbContext <TimelinesContext>(options => options.UseSqlServer(databaseConnectionString));
            services.AddTransient <IDatabaseService, DatabaseService>();

            _serviceProvider = services.BuildServiceProvider(validateScopes: true);
        }
Exemplo n.º 3
0
        static async Task Main(string[] args)
        {
            //unusually for a console app, using appsettings.json + secrets.json for configuration, for consistency with other projects and also for the secrets support - because it's a public repo.
            IConfiguration Configuration = new ConfigurationBuilder()
                                           .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                                           .AddUserSecrets(Assembly.GetExecutingAssembly(), optional: true)
                                           .AddEnvironmentVariables()
                                           .AddCommandLine(args)
                                           .Build();


            var clickUpConfig = new ClickUpConfig();

            Configuration.Bind("ClickUp", clickUpConfig);

            RegisterServices(clickUpConfig, Configuration.GetConnectionString("DefaultConnection"));

            var scope = _serviceProvider.CreateScope();
            await scope.ServiceProvider.GetRequiredService <ISyncService>().Process();            //entry point

            DisposeServices();
        }
 public SyncService(ClickUpConfig clickUpConfig, IClickUpService clickUpService)
 {
     _clickUpConfig  = clickUpConfig;
     _clickUpService = clickUpService;
 }