static void ConnectDirectoryService()
        {
            Console.WriteLine("*********************BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEPP***********************");
            Console.WriteLine("******************************Google Service Bot*********************************");

            var gApiServiceFactory = new GoogleServiceFactory();

            gApiServiceFactory.Parameters = new GoogleServiceParameter
            {
                AccountAdminUser = "******",
                AccountEmail     = "*****@*****.**",
                ApplicationName  = "G-App Services",
                AccountFilePath  = "json_path",
                ApiScopes        = new string[] { DirectoryService.Scope.AdminDirectoryUser },
                CredentialType   = CredentialTypeEnum.JSON
            };

            Console.WriteLine("User name to search: ");
            var userName = Console.ReadLine();

            Console.Write(Environment.NewLine);

            Console.WriteLine("JSON");

            var directoryService = gApiServiceFactory.CreateServiceObject <DirectoryService>();
            var usersListRequest = directoryService.Users.Get(userName);
            var usersListResult  = usersListRequest.Execute();

            Console.Write(Environment.NewLine);

            Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(usersListResult));

            Console.Write(Environment.NewLine);


            Console.WriteLine("P12");

            Console.Write(Environment.NewLine);

            gApiServiceFactory.Parameters.CredentialType  = CredentialTypeEnum.P12;
            gApiServiceFactory.Parameters.AccountFilePath = "p12_path";

            directoryService = gApiServiceFactory.CreateServiceObject <DirectoryService>();
            usersListRequest = directoryService.Users.Get(userName);
            usersListResult  = usersListRequest.Execute();

            Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(usersListResult));

            Console.ReadKey();
        }
        // If modifying these scopes, delete your previously saved credentials
        // at ~/.credentials/gmail-dotnet-quickstart.json

        static void Main(string[] args)
        {
            try
            {
                ILogger logger = new LoggerConfiguration()
                                 .MinimumLevel.Verbose()
                                 .WriteTo.LiterateConsole()
                                 .WriteTo.RollingFile("logs/log.txt")
                                 .CreateLogger();

                Settings settings = LoadSettings(args);

                logger.Verbose("{@settings}", settings);

                //setup our DI
                var serviceProvider = new ServiceCollection()
                                      .AddSingleton <EmailProcessorFactory>()
                                      .AddSingleton(sp => settings)
                                      .AddSingleton(GoogleServiceFactory.CreateGmailService())
                                      .AddSingleton <GmailClient>()
                                      .AddSingleton <CalendarClient>()
                                      .AddSingleton(GoogleServiceFactory.CreateGmailService())
                                      .AddSingleton(GoogleServiceFactory.CreateCalendarService())
                                      .AddSingleton(logger)
                                      .AddSingleton(sp => new CalendarSyncJob(
                                                        sp.GetService <GmailClient>(),
                                                        sp.GetService <EmailProcessorFactory>(),
                                                        sp.GetService <ILogger>()))
                                      .BuildServiceProvider();

                JobManager.JobFactory    = new JobFactory(serviceProvider);
                JobManager.JobException += (log) => logger.Error(log.Exception, "{message} \n\n\n {stackTrace}",
                                                                 log.Exception.Message, log.Exception.StackTrace);

                JobManager.Initialize(new JobRegistry(settings.FetchIntervalInHours));
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"{ex.Message}\n\n{ex.StackTrace}");
                throw;
            }

            Console.ReadLine();
        }