diff --git a/c3stream.cs b/c3stream.cs index 003da4c..49bddac 100644 --- a/c3stream.cs +++ b/c3stream.cs @@ -1,25 +1,40 @@ using System; +using System.Collections.Generic; using System.IO; +using System.Linq; using c3stream.Pages; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Hosting; +using Newtonsoft.Json; namespace c3stream { public static class c3stream { - public const string DataPath = "data"; - public const string DbFile = "_c3stream.json"; - public const string CachePath = "/mnt/storage/archive/Video/congress/"; - public const string CacheUrl = "https://mirror.c3stream.de/"; - public static object Lock = new object(); - public static string DbPath = Path.Combine(DataPath, DbFile); + public const string DataPath = "data"; + public const string DbFile = "_c3stream.json"; + public const string CachePath = "/mnt/storage/archive/Video/congress/"; + public const string CacheUrl = "https://mirror.c3stream.de/"; + public static object Lock = new object(); + public static string DbPath = Path.Combine(DataPath, DbFile); + public static List UserData = new List(); public static void Main(string[] args) { if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath); if (!File.Exists(DbPath)) ConferenceModel.WriteEventMetadata(); - CreateHostBuilder(args).Build().Run(); + ConferenceModel.ReadEventMetadata(); + + foreach (var e in ConferenceModel.EventMetadata.FindAll(p => p.State != null)) { + foreach (var state in e.State) { + lock (Lock) { + UserData.Add(new UserStatus(state.Guid, e.Guid, state.State)); + } + } + } + WriteUserData(); + + //CreateHostBuilder(args).Build().Run(); } public static void UpdateCookie(HttpRequest resquest, HttpResponse response, string redirectUri) { @@ -40,6 +55,24 @@ namespace c3stream { } } + public static void WriteUserData() { + lock (Lock) { + File.WriteAllText(Path.Combine(DataPath, "c3stream.user.json"), JsonConvert.SerializeObject(UserData)); + } + } + + public class UserStatus { + public readonly string TalkId; + public readonly string UserId; + public string State; + + public UserStatus(string userId, string talkId, string state = "unwatched") { + UserId = userId; + State = state; + TalkId = talkId; + } + } + public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); }