public void IdIsRemovedFromTheUrl() { var url = new Uri("https://www.example.org"); var converter = new FakeSearchQueryConverter(); var encoder = new JobAlertIdEncoder(converter); var id = encoder.GenerateId(new JobAlert() { Email = "*****@*****.**", Query = new JobSearchQuery() { Keywords = "test" } }); var urlWithId = encoder.AddIdToUrl(url, id); var urlWithoutId = encoder.RemoveIdFromUrl(urlWithId); Assert.AreEqual(url, urlWithoutId); }
public async Task <ActionResult> ReplaceAlert(JobSearchQuery searchQuery) { if (ModelState.IsValid) { var converter = new JobSearchQueryConverter(ConfigurationManager.AppSettings["TranslateObsoleteJobTypes"]?.ToUpperInvariant() == "TRUE"); var encoder = new JobAlertIdEncoder(converter); var alertId = encoder.ParseIdFromUrl(new Uri(Request.Url, Request.RawUrl)); var repo = new AzureTableStorageAlertsRepository(converter, ConfigurationManager.ConnectionStrings["Escc.EastSussexGovUK.Umbraco.AzureStorage"].ConnectionString); var oldAlert = repo.GetAlertById(alertId); var newAlert = new JobAlert() { Query = searchQuery, Email = oldAlert.Email, Frequency = searchQuery.Frequency, JobsSet = searchQuery.JobsSet }; newAlert.AlertId = encoder.GenerateId(newAlert); if (oldAlert.AlertId == newAlert.AlertId) { // The alert id didn't change but the frequency may have, so update the existing alert await repo.SaveAlert(newAlert); } else { // The alert id, and therefore the criteria, changed, so save the new alert and delete the old one await repo.SaveAlert(newAlert); await repo.CancelAlert(oldAlert.AlertId); } var urlWithoutQueryString = new Uri(Request.Url, new Uri(Request.Url, Request.RawUrl).AbsolutePath); var urlWithoutAlertId = encoder.RemoveIdFromUrl(urlWithoutQueryString); var urlWithAlertId = encoder.AddIdToUrl(urlWithoutAlertId, newAlert.AlertId); return(new RedirectResult(urlWithAlertId + "?updated=1")); } else { return(new RedirectResult(Request.RawUrl)); } }
public bool TryFindContent(PublishedContentRequest contentRequest) { try { if (contentRequest == null) { throw new ArgumentNullException(nameof(contentRequest)); } var converter = new JobSearchQueryConverter(ConfigurationManager.AppSettings["TranslateObsoleteJobTypes"]?.ToUpperInvariant() == "TRUE"); var encoder = new JobAlertIdEncoder(converter); var alertId = encoder.ParseIdFromUrl(contentRequest.Uri); if (String.IsNullOrEmpty(alertId)) { return(false); // not found } // if we remove the suffix, does that match a Job Alerts node? var contentCache = UmbracoContext.Current.ContentCache; var content = contentCache.GetByRoute(encoder.RemoveIdFromUrl(contentRequest.Uri).AbsolutePath); if (content == null) { return(false); // not found } if (content.ContentType.Alias != "JobAlerts") { return(false); // not found } // render that node contentRequest.PublishedContent = content; return(true); } catch (Exception e) { e.ToExceptionless().Submit(); return(false); } }