Files
duplicati/Duplicati/WebserverCore/DayOfWeekStringEnumConverter.cs
T
Kenneth Skovhede 9f79025744 Removed HttpServer.
Re-implemented everything using ASP.NET.
Changed some requests to use JSON instead of FORM data.
Some work towards deleting the FIXMEGlobal instance.
Auth is missing, XSRF does not work correctly.
2024-06-07 15:56:43 +02:00

70 lines
2.3 KiB
C#

using System.Text.Json;
using System.Text.Json.Serialization;
namespace Duplicati.WebserverCore;
public class DayOfWeekStringEnumConverter : JsonConverterFactory
{
private class DayOfWeekConverter : JsonConverter<DayOfWeek>
{
public override DayOfWeek Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType != JsonTokenType.String)
throw new JsonException();
return reader.GetString()?.Trim()?.ToLowerInvariant() switch
{
"sun" => DayOfWeek.Sunday,
"mon" => DayOfWeek.Monday,
"tue" => DayOfWeek.Tuesday,
"wed" => DayOfWeek.Wednesday,
"thu" => DayOfWeek.Thursday,
"fri" => DayOfWeek.Friday,
"sat" => DayOfWeek.Saturday,
_ => throw new JsonException()
};
}
public override void Write(Utf8JsonWriter writer, DayOfWeek value, JsonSerializerOptions options)
{
switch (value)
{
case DayOfWeek.Sunday:
writer.WriteStringValue("sun");
break;
case DayOfWeek.Monday:
writer.WriteStringValue("mon");
break;
case DayOfWeek.Tuesday:
writer.WriteStringValue("tue");
break;
case DayOfWeek.Wednesday:
writer.WriteStringValue("wed");
break;
case DayOfWeek.Thursday:
writer.WriteStringValue("thu");
break;
case DayOfWeek.Friday:
writer.WriteStringValue("fri");
break;
case DayOfWeek.Saturday:
writer.WriteStringValue("sat");
break;
default:
throw new JsonException();
}
writer.WriteStringValue(value.ToString());
}
}
public override bool CanConvert(Type typeToConvert)
{
return typeToConvert == typeof(DayOfWeek);
}
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
{
return new DayOfWeekConverter();
}
}