From 19be02798cb34803863b07af1bdd13fbb20b8814 Mon Sep 17 00:00:00 2001 From: Adam R Grey Date: Wed, 29 Mar 2023 13:01:46 -0400 Subject: [PATCH] caldav problems how did this work back in the silver meddlists days? --- Program.cs | 2 +- Reporters/NextcloudCalendars.cs | 85 +++++++++++++++++++++++++++++++++ newsletter.csproj | 3 +- 3 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 Reporters/NextcloudCalendars.cs diff --git a/Program.cs b/Program.cs index 7259aa3..98f8faa 100644 --- a/Program.cs +++ b/Program.cs @@ -79,7 +79,7 @@ namespace newsletter foreach (var reporterType in reporterTypes) { Console.WriteLine($"{reporterType.ToString().Substring(skipPortionInName).ToLower()} reporter class discovered"); - Func predicate = r => r.ReporterClass == reporterType.ToString().Substring(skipPortionInName).ToLower(); + Func predicate = r => r.ReporterClass?.ToLower() == reporterType.ToString().Substring(skipPortionInName).ToLower(); if (!conf.Reporters.Any(predicate)) { Console.WriteLine($"no configurations for it"); diff --git a/Reporters/NextcloudCalendars.cs b/Reporters/NextcloudCalendars.cs new file mode 100644 index 0000000..c6b1b76 --- /dev/null +++ b/Reporters/NextcloudCalendars.cs @@ -0,0 +1,85 @@ +using HtmlAgilityPack; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using CalDAV.NET;//https://github.com/markatk/CalDAV.NET + +namespace newsletter.Reporters +{ + public class NextcloudCalendars : Reporter + { + public Uri url { get; set; } + public string username_bot { get; set; } + public string password_bot { get; set; } + public string username_self { get; set; } + public string password_self { get; set; } + +#pragma warning disable CS1998 + public override async Task Report(Configuration.Reporter config) + { + url = new Uri(config.Misc.FirstOrDefault(kvp => kvp.Key == "url").Value); + username_bot = config.Misc.FirstOrDefault(kvp => kvp.Key == "username_bot").Value; + password_bot = config.Misc.FirstOrDefault(kvp => kvp.Key == "password_bot").Value; + username_self = config.Misc.FirstOrDefault(kvp => kvp.Key == "username_self").Value; + password_self = config.Misc.FirstOrDefault(kvp => kvp.Key == "password_self").Value; + + var sb = new StringBuilder(); + sb.AppendLine("nextcloud calendars"); + + + var client = new CalDAV.NET.Client(url, username_bot, password_bot); + var cals = await client.GetCalendarsAsync(); + if(cals != null && cals.Any()) + { + foreach(var cal in cals) + { + sb.AppendLine($"{cal.DisplayName}
"); + } + } + else + { + sb.AppendLine("no cals found"); + } + + // var clientParams = new WebDavClientParams + // { + // BaseAddress = url, + // Credentials = new NetworkCredential(username_bot, password_bot) + // }; + // using (var client = new WebDavClient(clientParams)) + // { + // var result = await client.Propfind(url); + // sb.AppendLine($"{result.StatusCode} - {result.Resources?.Count() ?? 0} items
"); + // if (result.Resources.Any()) + // { + // foreach (var resource in result.Resources) + // { + // if (resource.Uri.EndsWith("/calendars/")) + // { + // sb.AppendLine($"calendars: {resource.Uri}"); + // var resutl2 = await client.GetFileResponse if (resutl2.IsSuccessful && resutl2.Resources?.Any() == true) + // { + // foreach (var resource2 in result.Resources) + // { + // sb.AppendLine($"
{resource2.DisplayName} - {resource2.Uri} - is collection? {resource2.IsCollection} - {resource2}"); + // } + // } + // } + // } + // } + // } + + if (config.Misc?.Any() == true) + foreach (var miscConfig in config.Misc) + { + sb.AppendLine($"{miscConfig.Key}: {miscConfig.Value}"); + } + return new Report() + { + ReportContent = HtmlNode.CreateNode($"
{sb.ToString()}
"), + TextSummary = "dummy text for testing purposes" + }; + } +#pragma warning restore CS1998 + } +} diff --git a/newsletter.csproj b/newsletter.csproj index cbdffdd..2784f90 100644 --- a/newsletter.csproj +++ b/newsletter.csproj @@ -9,10 +9,11 @@ + - +