static void Main(string[] args) { #region Setup Configuration var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddEnvironmentVariables(); IConfigurationRoot configuration = builder.Build(); var azureServiceBusSettings = new AzureServiceBusSettings(); configuration.GetSection(nameof(AzureServiceBusSettings)).Bind(azureServiceBusSettings); var gdriveFactorySettings = new GDriveFactoryAppSettings(); configuration.GetSection(nameof(GDriveFactoryAppSettings)).Bind(gdriveFactorySettings); // Required by WebJobs SDK Environment.SetEnvironmentVariable("AzureWebJobsStorage", configuration.GetValue <string>("AzureWebJobsStorage")); Environment.SetEnvironmentVariable("AzureWebJobsDashboard", configuration.GetValue <string>("AzureWebJobsDashboard")); #endregion #region Setup DI var serviceCollection = new ServiceCollection(); // GDrive serviceCollection.AddSingleton(gdriveFactorySettings); // EventBus serviceCollection.AddSingleton(azureServiceBusSettings); serviceCollection.AddSingleton <IEventHandlerRegistry, InMemoryEventHandlerRegistry>(); serviceCollection.AddSingleton <IEventBusMessageListener, EventBusServiceBusMessageListener>(); serviceCollection.AddTransient <IEventBusMessageProcessor, DefaultEventBusServiceBusMessageProcessor>(); serviceCollection.AddSingleton <IEventBusMessagePublisher, EventBusServiceBusMessagePublisher>(); // Event Handlers serviceCollection.AddTransient <GDriveCreateProjectEventHandler>(); var serviceProvider = serviceCollection.BuildServiceProvider(); #endregion RegisterEventHandlers(serviceProvider); // Start listening for Events serviceProvider.GetService <IEventBusMessageListener>().RegisterEventListener(); // Azure WebJobs SDK .Net Core 2.0 is in Beta with no firm release dates. // So, cannot use the ServiceBus Triggers part of the SDK. // Just using the below part of SDK code, to keep the console application running continuously. var host = new JobHost(); host.RunAndBlock(); }
public GDriveClient(GDriveFactoryAppSettings gdriveFactorySettings) { this._gdriveFactorySettings = gdriveFactorySettings; }