58 lines
1.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|