refactor cookies
This commit is contained in:
parent
9049976524
commit
1c9dfcefea
|
@ -11,12 +11,6 @@
|
|||
<e p="c3stream.cs" t="Include" />
|
||||
<e p="c3stream.csproj" t="IncludeRecursive" />
|
||||
<e p="c3stream.sln" t="IncludeFlat" />
|
||||
<e p="data" t="Include">
|
||||
<e p="33c3.json" t="Include" />
|
||||
<e p="34c3.json" t="Include" />
|
||||
<e p="35c3.json" t="Include" />
|
||||
<e p="_c3stream.json" t="Include" />
|
||||
</e>
|
||||
<e p="LICENSE" t="Include" />
|
||||
<e p="obj" t="ExcludeRecursive">
|
||||
<e p="Debug" t="Include">
|
||||
|
|
|
@ -21,14 +21,17 @@
|
|||
return;
|
||||
}
|
||||
|
||||
if (Request.Query.ContainsKey("bookmark") && HttpContext.Session.GetString("bookmark") != Request.Query["bookmark"]) {
|
||||
HttpContext.Session.SetString("bookmark", Request.Query["bookmark"]);
|
||||
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"]);
|
||||
}
|
||||
if (!HttpContext.Session.Keys.Contains("bookmark") || !Guid.TryParseExact(HttpContext.Session.GetString("bookmark"), "D", out _)) {
|
||||
HttpContext.Session.SetString("bookmark", Guid.NewGuid().ToString());
|
||||
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);
|
||||
}
|
||||
if (!Request.Query.ContainsKey("bookmark") || HttpContext.Session.GetString("bookmark") != Request.Query["bookmark"]) {
|
||||
Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + HttpContext.Session.GetString("bookmark") + (Request.Query["orderby"] == "published" ? "&orderby=published" : ""));
|
||||
else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
|
||||
Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + Request.Cookies["bookmark"]);
|
||||
}
|
||||
|
||||
ViewData["Title"] = Request.Query["c"];
|
||||
|
@ -62,8 +65,8 @@
|
|||
metadata = GetEvent(talk.Guid?.ToString());
|
||||
EventMetadata.Add(metadata);
|
||||
}
|
||||
var isWatched = EventMetadata.Any(p => p.Guid == talk.Guid?.ToString() && p.State.FirstOrDefault(q => q.Guid == HttpContext.Session.GetString("bookmark"))?.State == "watched");
|
||||
var isMarked = EventMetadata.Any(p => p.Guid == talk.Guid?.ToString() && p.State.FirstOrDefault(q => q.Guid == HttpContext.Session.GetString("bookmark"))?.State == "marked");
|
||||
var isWatched = EventMetadata.Any(p => p.Guid == talk.Guid?.ToString() && p.State.FirstOrDefault(q => q.Guid == Request.Cookies["bookmark"])?.State == "watched");
|
||||
var isMarked = EventMetadata.Any(p => p.Guid == talk.Guid?.ToString() && p.State.FirstOrDefault(q => q.Guid == Request.Cookies["bookmark"])?.State == "marked");
|
||||
var file = metadata.Talk.Recordings.FirstOrDefault(p => System.IO.File.Exists(System.IO.Path.Combine(c3stream.CachePath, conference.Acronym, p.Filename)));
|
||||
var eventName = talk.Tags[0].Replace("-", "-<br/>");
|
||||
var category = tagFormat switch {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
|
@ -16,17 +15,16 @@ namespace c3stream.Pages {
|
|||
public void OnGet() {
|
||||
var guid = Request.Query["guid"];
|
||||
var state = Request.Query["state"];
|
||||
if (string.IsNullOrWhiteSpace(guid) || string.IsNullOrWhiteSpace(state) || !HttpContext.Session.Keys.Contains("bookmark"))
|
||||
if (string.IsNullOrWhiteSpace(guid) || string.IsNullOrWhiteSpace(state) || !Request.Cookies.ContainsKey("bookmark"))
|
||||
return;
|
||||
|
||||
lock (c3stream.Lock) {
|
||||
ReadEventMetadata();
|
||||
var existing = EventMetadata.FirstOrDefault(p => p.Guid == guid)
|
||||
?.State.FirstOrDefault(p => p.Guid == HttpContext.Session.GetString("bookmark"));
|
||||
var existing = EventMetadata.FirstOrDefault(p => p.Guid == guid)?.State.FirstOrDefault(p => p.Guid == Request.Cookies["bookmark"]);
|
||||
if (existing != null)
|
||||
existing.State = state;
|
||||
else
|
||||
EventMetadata.FirstOrDefault(p => p.Guid == guid)?.State.Add(new UserState(HttpContext.Session.GetString("bookmark"), state));
|
||||
EventMetadata.FirstOrDefault(p => p.Guid == guid)?.State.Add(new UserState(Request.Cookies["bookmark"], state));
|
||||
WriteEventMetadata();
|
||||
Response.Redirect("/");
|
||||
}
|
||||
|
|
|
@ -3,25 +3,28 @@
|
|||
@model IndexModel
|
||||
@{
|
||||
ViewData["Title"] = "Home";
|
||||
if (Request.Query.ContainsKey("bookmark") && HttpContext.Session.GetString("bookmark") != Request.Query["bookmark"]) {
|
||||
HttpContext.Session.SetString("bookmark", Request.Query["bookmark"]);
|
||||
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"]);
|
||||
}
|
||||
if (!HttpContext.Session.Keys.Contains("bookmark") || !Guid.TryParseExact(HttpContext.Session.GetString("bookmark"), "D", out _)) {
|
||||
HttpContext.Session.SetString("bookmark", Guid.NewGuid().ToString());
|
||||
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);
|
||||
}
|
||||
if (!Request.Query.ContainsKey("bookmark") || HttpContext.Session.GetString("bookmark") != Request.Query["bookmark"]) {
|
||||
Response.Redirect("/?bookmark=" + HttpContext.Session.GetString("bookmark"));
|
||||
else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
|
||||
Response.Redirect("/?bookmark=" + Request.Cookies["bookmark"]);
|
||||
}
|
||||
}
|
||||
|
||||
<div style="text-align: center">
|
||||
<h1>Welcome to c3stream!</h1>
|
||||
Your bookmark link:<br/>
|
||||
<code onclick="copyToClipboard(this)">https://@Request.Host.Value?bookmark=@HttpContext.Session.GetString("bookmark")</code><br/><br/>
|
||||
<code onclick="copyToClipboard(this)">https://@Request.Host.Value?bookmark=@Request.Cookies["bookmark"]</code><br/><br/>
|
||||
<div class="btn-group">
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=36c3&bookmark=@HttpContext.Session.GetString("bookmark")">36c3</a>
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=35c3&bookmark=@HttpContext.Session.GetString("bookmark")">35c3</a>
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=34c3&bookmark=@HttpContext.Session.GetString("bookmark")">34c3</a>
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=33c3&bookmark=@HttpContext.Session.GetString("bookmark")">33c3</a>
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=36c3&bookmark=@Request.Cookies["bookmark"]">36c3</a>
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=35c3&bookmark=@Request.Cookies["bookmark"]">35c3</a>
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=34c3&bookmark=@Request.Cookies["bookmark"]">34c3</a>
|
||||
<a type="button" class="btn btn-primary" href="/Conference?c=33c3&bookmark=@Request.Cookies["bookmark"]">33c3</a>
|
||||
</div>
|
||||
</div>
|
|
@ -10,14 +10,17 @@
|
|||
return;
|
||||
}
|
||||
|
||||
if (Request.Query.ContainsKey("bookmark") && HttpContext.Session.GetString("bookmark") != Request.Query["bookmark"]) {
|
||||
HttpContext.Session.SetString("bookmark", Request.Query["bookmark"]);
|
||||
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"]);
|
||||
}
|
||||
if (!HttpContext.Session.Keys.Contains("bookmark") || !Guid.TryParseExact(HttpContext.Session.GetString("bookmark"), "D", out _)) {
|
||||
HttpContext.Session.SetString("bookmark", Guid.NewGuid().ToString());
|
||||
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);
|
||||
}
|
||||
if (!Request.Query.ContainsKey("bookmark") || HttpContext.Session.GetString("bookmark") != Request.Query["bookmark"]) {
|
||||
Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + HttpContext.Session.GetString("bookmark"));
|
||||
else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
|
||||
Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + Request.Cookies["bookmark"]);
|
||||
}
|
||||
|
||||
ConferenceModel.ReadEventMetadata();
|
||||
|
@ -34,8 +37,8 @@
|
|||
description = "<missing description>";
|
||||
}
|
||||
|
||||
var isWatched = talk.State.FirstOrDefault(q => q.Guid == HttpContext.Session.GetString("bookmark"))?.State == "watched";
|
||||
var isMarked = talk.State.FirstOrDefault(q => q.Guid == HttpContext.Session.GetString("bookmark"))?.State == "marked";
|
||||
var isWatched = talk.State.FirstOrDefault(q => q.Guid == Request.Cookies["bookmark"])?.State == "watched";
|
||||
var isMarked = talk.State.FirstOrDefault(q => q.Guid == Request.Cookies["bookmark"])?.State == "marked";
|
||||
var file = talk.Talk.Recordings.FirstOrDefault(p => System.IO.File.Exists(System.IO.Path.Combine(c3stream.CachePath, talk.Talk.ConferenceUrl.AbsoluteUri.Split("/").Last(), p.Filename)));
|
||||
var eventName = talk.Talk.Tags[0].Replace("-", "-<br/>");
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
using System;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
@ -14,10 +13,6 @@ namespace c3stream {
|
|||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
public void ConfigureServices(IServiceCollection services) {
|
||||
services.AddRazorPages();
|
||||
services.AddSession(opts => {
|
||||
opts.Cookie.Name = "bookmark";
|
||||
opts.IdleTimeout = TimeSpan.MaxValue;
|
||||
});
|
||||
}
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
|
@ -29,7 +24,6 @@ namespace c3stream {
|
|||
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||
|
||||
app.UseStaticFiles();
|
||||
app.UseSession();
|
||||
|
||||
app.UseRouting();
|
||||
|
||||
|
|
|
@ -11,6 +11,25 @@
|
|||
<ItemGroup>
|
||||
<_ContentIncludedByDefault Remove="data\database.json" />
|
||||
<_ContentIncludedByDefault Remove="data\_c3stream.json" />
|
||||
<_ContentIncludedByDefault Remove="data\33c3.json" />
|
||||
<_ContentIncludedByDefault Remove="data\34c3.json" />
|
||||
<_ContentIncludedByDefault Remove="data\35c3.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="data\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Remove="data\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="data\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="data\**" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue