diff --git a/.idea/.idea.c3stream/.idea/contentModel.xml b/.idea/.idea.c3stream/.idea/contentModel.xml index 80798a6..c9d3755 100644 --- a/.idea/.idea.c3stream/.idea/contentModel.xml +++ b/.idea/.idea.c3stream/.idea/contentModel.xml @@ -3,6 +3,8 @@ + + diff --git a/Pages/Conference.cshtml b/Pages/Conference.cshtml index 681963f..15f39b8 100644 --- a/Pages/Conference.cshtml +++ b/Pages/Conference.cshtml @@ -1,7 +1,6 @@ @page @model ConferenceModel @using System.Net -@using Microsoft.AspNetCore.Http @using static ConferenceModel @{ int tagFormat; @@ -21,18 +20,7 @@ return; } - if (Request.Query.ContainsKey("bookmark") && Request.Cookies["bookmark"] != Request.Query["bookmark"]) { - Response.Cookies.Append("bookmark", Request.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue}); - Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + Request.Query["bookmark"]); - } - else if (!Request.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(Request.Cookies["bookmark"], "D", out _)) { - var guid = Guid.NewGuid().ToString(); - Response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue}); - Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + guid); - } - else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) { - Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + Request.Cookies["bookmark"]); - } + c3stream.UpdateCookie(Request, Response, $"/Conference?c={Request.Query["c"]}&"); ViewData["Title"] = Request.Query["c"]; var wc = new WebClient(); diff --git a/Pages/Index.cshtml b/Pages/Index.cshtml index df1a29e..6bcf063 100644 --- a/Pages/Index.cshtml +++ b/Pages/Index.cshtml @@ -1,20 +1,8 @@ @page -@using Microsoft.AspNetCore.Http @model IndexModel @{ ViewData["Title"] = "Home"; - if (Request.Query.ContainsKey("bookmark") && Request.Cookies["bookmark"] != Request.Query["bookmark"]) { - Response.Cookies.Append("bookmark", Request.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue}); - Response.Redirect("/?bookmark=" + Request.Query["bookmark"]); - } - else if (!Request.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(Request.Cookies["bookmark"], "D", out _)) { - var guid = Guid.NewGuid().ToString(); - Response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue}); - Response.Redirect("/?bookmark=" + guid); - } - else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) { - Response.Redirect("/?bookmark=" + Request.Cookies["bookmark"]); - } + c3stream.UpdateCookie(Request, Response, $"/?"); }
diff --git a/Pages/Info.cshtml b/Pages/Info.cshtml index d296fe7..738f0e6 100644 --- a/Pages/Info.cshtml +++ b/Pages/Info.cshtml @@ -1,5 +1,4 @@ @page -@using Microsoft.AspNetCore.Http @model InfoModel @{ ViewData["Title"] = "Info"; @@ -10,18 +9,7 @@ return; } - if (Request.Query.ContainsKey("bookmark") && Request.Cookies["bookmark"] != Request.Query["bookmark"]) { - Response.Cookies.Append("bookmark", Request.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue}); - Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + Request.Query["bookmark"]); - } - else if (!Request.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(Request.Cookies["bookmark"], "D", out _)) { - var guid = Guid.NewGuid().ToString(); - Response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue}); - Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + guid); - } - else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) { - Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + Request.Cookies["bookmark"]); - } + c3stream.UpdateCookie(Request, Response, $"/Info?guid={Request.Query["guid"]}&"); ConferenceModel.ReadEventMetadata(); var talk = ConferenceModel.EventMetadata.FirstOrDefault(p => p.Guid == Request.Query["guid"]); diff --git a/c3stream.cs b/c3stream.cs index 8d09f95..003da4c 100644 --- a/c3stream.cs +++ b/c3stream.cs @@ -1,6 +1,8 @@ +using System; using System.IO; using c3stream.Pages; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Hosting; namespace c3stream { @@ -20,6 +22,24 @@ namespace c3stream { CreateHostBuilder(args).Build().Run(); } + public static void UpdateCookie(HttpRequest resquest, HttpResponse response, string redirectUri) { + //if new bookmark is in uri + if (resquest.Query.ContainsKey("bookmark") && resquest.Cookies["bookmark"] != resquest.Query["bookmark"]) { + response.Cookies.Append("bookmark", resquest.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue}); + response.Redirect(redirectUri + "bookmark=" + resquest.Query["bookmark"]); + } + //if no cookie exists or cookie is invalid + else if (!resquest.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(resquest.Cookies["bookmark"], "D", out _)) { + var guid = Guid.NewGuid().ToString(); + response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue}); + response.Redirect(redirectUri + "bookmark=" + guid); + } + //redir to cookie + else if (!resquest.Query.ContainsKey("bookmark")) { + response.Redirect(redirectUri + "bookmark=" + resquest.Cookies["bookmark"]); + } + } + public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); }