using System;
using System.Reflection;
using System.IO;


using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;

namespace CSVDownloader.Web {
    class DriverFactory {
        public static ChromeDriver GetDriver()
        {
            CreateDir();

            var options = new ChromeOptions();
            // options.AddArgument("--headless");
            String download_dir = GetTmpDownloadDir();
            options.AddUserProfilePreference("download.default_directory", download_dir);
            ChromeDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);

            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));


            return driver;
        }

        public static String GetTmpDownloadDir()
        {
            return Path.GetFullPath("tmp_download");
        }

        public static String GetDownloadDir()
        {
            return Path.GetFullPath("download");
        }

        private static void CreateDir()
        {
            String tmpdownload_dir = GetTmpDownloadDir();
            String download_dir = GetDownloadDir();

            if (!Directory.Exists(tmpdownload_dir))
            {
                Directory.CreateDirectory(tmpdownload_dir);
            }

            if (!Directory.Exists(download_dir))
            {
                Directory.CreateDirectory(download_dir);
            }
        }
    }
}
