예제 #1
0
        static async Task Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Debug()
                         .WriteTo.Console()
                         .WriteTo.File("c:\\temp\\logs\\renamerLog.txt", rollingInterval: RollingInterval.Day)
                         .CreateLogger();
            Log.Information("Started log on {a}", DateTime.Now.ToLongTimeString());

            SetUpVT100();

            string projectRoot = AppContext.BaseDirectory.Substring(0, AppContext.BaseDirectory.LastIndexOf(@"\bin"));
            // PrintDirectories(appRoot);

            var builder = new ConfigurationBuilder()
                          .SetBasePath(projectRoot)
                          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

            // IConfigurationRoot configuration = builder.Build();
            Configuration = builder.Build();

            var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();

            var httpClientFactory = serviceProvider.GetService <IHttpClientFactory>();

            var options = new DbContextOptionsBuilder <EpisodeContext>()
                          .UseSqlite(Configuration.GetConnectionString("connectionString"))
                          .Options;
            var context = new EpisodeContext(options);

            TVDBRetrieverService retrieverService = new TVDBRetrieverService(httpClientFactory);
            TVShowService        showService      = new TVShowService(context);
            EpisodeService       epService        = new EpisodeService(context);
            LocalMediaService    localService     = new LocalMediaService(Configuration.GetSection("LocalMedia").GetValue <string>("directoryPath"));
            string tvdbInfoPath = GetTVDBInfoFilePath();
            RenamePrompterConsole prompterConsole = new RenamePrompterConsole();
            RenamerFacade         facade          = new RenamerFacade(retrieverService, showService, epService, localService, context, prompterConsole, tvdbInfoPath);

            MainMenu mainMenu = new MainMenu(facade, context, showService);
            await mainMenu.DisplayMenu();

            // await DisplayMenuAndProcessUserInput(facade);
            // SetUpAutomapper();

            // GetNewToken(httpClientFactory);

            // GetApiKey();
            //ReadTVDBInfo();
            // FindSampleShow(context);
            // PauseForInput();
            // Console.WriteLine("Adding show");
            //AddSampleShow(context);
        }
        public void GetLoginUri_Passes()
        {
            var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();

            var httpClientFactory        = serviceProvider.GetService <IHttpClientFactory>();
            TVDBRetrieverService service = new TVDBRetrieverService(httpClientFactory);
            string expectedUri           = "https://api.thetvdb.com/login";

            // Act
            var uri = service.GetLoginUri();

            Assert.Equal(expectedUri, uri.AbsoluteUri);
        }