Files
Chat/ChatController/LoginKlassen/TimeStampConverter.cs

58 lines
1.9 KiB
C#

using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace ChatController.LoginKlassen
{
public class TimeStampConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException("Nicht implementiert, da nicht benötigt.");
}
public override object ReadJson(JsonReader reader, Type objectType, object messageJson, JsonSerializer serializer)
{
switch(reader.TokenType)
{
case JsonToken.Null:
return null;
case JsonToken.StartObject:
{
var jsonObject = JObject.Load(reader);
var date = jsonObject["date"]?.ToString();
var timeZoneType = jsonObject["timezone_type"]?.ToObject<int>();
var timeZone = jsonObject["timezone"]?.ToString();
if(date is null || timeZoneType is null || timeZone is null)
{
return null;
}
return new LastMessageTimeStamp(date, timeZoneType.Value, timeZone);
}
case JsonToken.Date:
{
if(reader.Value is null)
{
return null;
}
return DateTime.TryParse(reader.Value.ToString(), out var timestamp) ? new LastMessageTimeStamp(timestamp.ToString("dd.MM.yyyy HH:mm:ss.ffffff"), 3, "UTC") : null;
}
default:
return null;
}
}
public override bool CanRead => true;
public override bool CanWrite => false;
public override bool CanConvert(Type objectType)
{
return typeof(LastMessageTimeStamp).IsAssignableFrom(objectType);
}
}
}