public async Task <ActionResult> GatedFormMarkup(FormCollection formCollection) { GatedContentLogger.Log.Info("[HttpPost] GatedFormMarkup Hit"); ActionResult toReturn = null; var formRelayer = new FormRelayer(formCollection, ModelState.IsValid); var captchaDataModel = new GatedFormDataModel(CaptchaGateSettings, formRelayer.GateItemIdStr); var gatedFormViewModel = captchaDataModel.GetViewModel(); if (formRelayer.DataIsValid && gatedFormViewModel.DataSourceItemProxy.IsValidForRendering) { formRelayer.TestingFormFormSubmitFail = gatedFormViewModel.DataSourceItemProxy.TestSettings.TestingForceFormSubmitFail; var CaptchaTestSettings = new CaptchaTestSettings( gatedFormViewModel.DataSourceItemProxy.TestSettings.TestingForceCaptchaFail, gatedFormViewModel.DataSourceItemProxy.TestSettings.TestingForceCaptchaSuccess ); var captchaProxy = new CaptchaProxy( formRelayer[FormsConstants.RecaptchaV3.TokenElemId], CaptchaGateSettings.CaptchaV3EnvironmentSettings, CaptchaTestSettings ); if (await captchaProxy.IsCaptchaValid()) { toReturn = await GetActionForCaptchaPass(formRelayer, gatedFormViewModel, gatedFormViewModel.FormProxy); } else { toReturn = new RedirectResult(gatedFormViewModel.DataSourceItemProxy.OnCaptchFailUrlFriendly);; } } else { if (!formRelayer.DataIsValid) { GatedContentLogger.Error("formCollection data is invalid", this); } if (!gatedFormViewModel.DataSourceItemProxy.IsValidForRendering) { GatedContentLogger.Error("DataSourceProxy is invalid", this); } } return(toReturn); }