From 6c696c78212c2775dfa668f0bd79850646fcddb2 Mon Sep 17 00:00:00 2001 From: Sijmen Schoon Date: Sun, 4 Jul 2021 12:28:21 +0200 Subject: [PATCH] Add validation when adding calendar items --- BlazorApp/Data/Calendar.cs | 24 ++++++++++++++---------- BlazorApp/Pages/Index.razor | 25 +++++++++++++------------ 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/BlazorApp/Data/Calendar.cs b/BlazorApp/Data/Calendar.cs index 1b8581c..bcc68ab 100644 --- a/BlazorApp/Data/Calendar.cs +++ b/BlazorApp/Data/Calendar.cs @@ -28,10 +28,11 @@ namespace BlazorApp.Data public string Password { get; set; } - public string Name { get; set; } + [Required] public string Name { get; set; } - private string AuthorizationHeader => - $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Username}:{Password}"))}"; + private string AuthorizationHeader => Username == null || Password == null + ? null + : $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Username}:{Password}"))}"; private static DateTime _parseDateTime(string s) { @@ -49,14 +50,14 @@ namespace BlazorApp.Data .Replace("\n ", "") .Replace("\n\t", "") .Replace("\r", ""); - + foreach (var line in body.Split("\n")) { var trimmed = line.Trim(); var split = trimmed.Split(':', 2); if (split.Length != 2) continue; - + var left = split[0].Trim().Split(';'); var name = left[0]; @@ -119,10 +120,12 @@ namespace BlazorApp.Data public async Task> GetEvents() { var client = new HttpClient(); - client.DefaultRequestHeaders.Add("Authorization", AuthorizationHeader); + if (AuthorizationHeader != null) + client.DefaultRequestHeaders.Add("Authorization", AuthorizationHeader); + var body = await client.GetStringAsync(Url); var events = ParseICal(body); - + var now = DateTime.Now; events = events.FindAll(@event => @event.DtStart > now || @event.DtEnd > now); @@ -132,7 +135,7 @@ namespace BlazorApp.Data return -1; if (y.DtStart == null) return 1; - + return DateTime.Compare(x.DtStart.Value, y.DtStart.Value); }); @@ -145,11 +148,12 @@ namespace BlazorApp.Data public async Task GetEventByUid(string uid) { var client = new HttpClient(); - client.DefaultRequestHeaders.Add("Authorization", AuthorizationHeader); + if (AuthorizationHeader != null) + client.DefaultRequestHeaders.Add("Authorization", AuthorizationHeader); var request = new HttpRequestMessage(new HttpMethod("REPORT"), Url); request.Headers.Add("Depth", "1"); - + // TODO Use XML generator to safely add UID - this is sensitive to scary injection stuff request.Content = new StringContent(@$" diff --git a/BlazorApp/Pages/Index.razor b/BlazorApp/Pages/Index.razor index 83a0193..61657e8 100644 --- a/BlazorApp/Pages/Index.razor +++ b/BlazorApp/Pages/Index.razor @@ -18,16 +18,18 @@ else {
  • @calendar.Name - ( + ( + @if (_confirmDeleteId == calendar.Id) { - Confirm deletion? + @:Confirm deletion? } else { } - ) + + )
  • } @@ -37,33 +39,33 @@ else

    Add New Calendar

    + + +
    - +
    - + @bind-Value="_calendarModel.Username"/>
    + @bind-Value="_calendarModel.Password"/>
    + @bind-Value="_calendarModel.Name"/>
    @@ -95,7 +97,6 @@ else { await CalendarService.CreateCalendar(_calendarModel); _calendarModel = null; - _calendars = await CalendarService.GetCalendars(); }