public async Task <ActionResult> Challenge(SupportServiceResourceKey resourceKey, SupportServiceResourceKey challengeKey, string resourceId, string url) { if (!_serviceConfiguration.ChallengeExists(challengeKey)) { return(HttpNotFound()); } ViewBag.SubNav = await _repository.GetNav(resourceKey, resourceId); ViewBag.SubHeader = await _repository.GenerateHeader(resourceKey, resourceId); try { var challengeForm = await _repository.GetChallengeForm(resourceKey, challengeKey, resourceId, url); return(View("Sub", new ResourceResultModel { StatusCode = HttpStatusCode.OK, Resource = challengeForm })); } catch { return(View("Missing")); } }
public async Task <ChallengeResult> SubmitChallenge(string id, IDictionary <string, string> formData) { var redirect = formData["redirect"]; var innerAction = formData["innerAction"]; var challengeKey = (SupportServiceResourceKey)Enum.Parse(typeof(SupportServiceResourceKey), formData["challengeKey"]); var resourceKey = (SupportServiceResourceKey)Enum.Parse(typeof(SupportServiceResourceKey), formData["resourceKey"]); if (!_serviceConfiguration.ChallengeExists(challengeKey)) { throw new MissingMemberException(); } var siteUri = _serviceConfiguration.FindSiteBaseUriForManfiestElement(_sites, challengeKey); var uri = new Uri(siteUri, innerAction); formData.Remove("redirect"); formData.Remove("innerAction"); formData.Remove("resourceKey"); var html = await _siteConnector.Upload <string>(uri, formData); if (_siteConnector.LastException != null) { throw _siteConnector.LastException; } return(HandleChallenegeResponseContent(html, resourceKey, challengeKey, id, redirect)); }