public IActionResult Flush()
 {
     if (VWOClient != null)
     {
         CustomLogger logger = new CustomLogger();
         logger.WriteLog(LogLevel.DEBUG, "manual flushEvent called ");
         bool response = VWOClient.FlushEvents();
         logger.WriteLog(LogLevel.DEBUG, "flushEvent response: " + response.ToString());
     }
     return(View("Index"));
 }
        static HomeController()
        {
            VWO.Configure(LogLevel.DEBUG);
            VWO.Configure(new CustomLogger());
            CustomLogger logger = new CustomLogger();

            SettingsFile = SettingsProvider.GetSettingsFile(VWOConfig.SDK.AccountId, VWOConfig.SDK.SdkKey);
            BatchEventData _batchData = new BatchEventData();

            _batchData.EventsPerRequest    = Defaults.EventsPerRequest;
            _batchData.RequestTimeInterval = Defaults.RequestTimeInterval;
            _batchData.FlushCallback       = new FlushCallback();
            //logger.WriteLog(LogLevel.DEBUG, "BatchEventData : EventsPerRequest-" + Defaults.EventsPerRequest.ToString() +", RequestTimeInterval:" + Defaults.RequestTimeInterval);
            //VWOClient = VWO.Launch(SettingsFile, batchData: _batchData);

            //logger.WriteLog(LogLevel.DEBUG, "HookManager : IntegrationEventListener onEvent requested ");
            //VWOClient = VWO.Launch(SettingsFile, batchData: _batchData, integrations: new HookManager(){HookCallback = new HookCallback()});

            logger.WriteLog(LogLevel.DEBUG, "BatchEventData,userStorageService,isDevelopmentMode,integrations,shouldTrackReturningUser passed in SDK");
            VWOClient = VWO.Launch(SettingsFile, batchData: _batchData, userStorageService: new UserStorageService(),
                                   isDevelopmentMode: false, integrations: new HookManager()
            {
                HookCallback = new HookCallback()
            }, shouldTrackReturningUser: false);
        }
        public async Task <string> webhook()
        {
            CustomLogger logger = new CustomLogger();
            string       PayLoad;

            logger.WriteLog(LogLevel.DEBUG, "Post request from vwo app");

            using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
            {
                PayLoad = await reader.ReadToEndAsync();
            }
            logger.WriteLog(LogLevel.DEBUG, "VWO webhook payload: " + PayLoad);
            if (string.IsNullOrEmpty(Defaults.WebhookSecretKey) == false)
            {
                logger.WriteLog(LogLevel.DEBUG, "WebhookSecretKey exists . VWO webhook authentication Checking.");

                if (Request.Headers["x-vwo-auth"].ToString() != Defaults.WebhookSecretKey)
                {
                    logger.WriteLog(LogLevel.DEBUG, "VWO webhook authentication failed. Please check.");
                    return("VWO webhook authentication failed. Please check.");
                }

                if (VWOClient != null)
                {
                    logger.WriteLog(LogLevel.DEBUG, "Authentication passed and GetAndUpdateSettingsFile function is called");
                    await SettingsProvider.GetAndUpdateSettingsFile(VWOConfig.SDK.AccountId, VWOConfig.SDK.SdkKey);

                    logger.WriteLog(LogLevel.DEBUG, "Setting file has been updated");
                }
            }
            else
            {
                if (VWOClient != null)
                {
                    logger.WriteLog(LogLevel.DEBUG, "GetAndUpdateSettingsFile function called");
                    await SettingsProvider.GetAndUpdateSettingsFile(VWOConfig.SDK.AccountId, VWOConfig.SDK.SdkKey);

                    logger.WriteLog(LogLevel.DEBUG, "Setting file has been updated");
                }
            }


            return("");
        }