using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
namespace uEvents.Meetup
{
///
/// http://stackapps.com/questions/1175/how-to-convert-unix-timestamp-to-net-datetime/1176#1176
///
/// Useful when serializing/deserializing json for use with the Stack Overflow API, which produces and consumes Unix Timestamp dates
///
///
/// swiped from lfoust and fixed for latest json.net with some tweaks for handling out-of-range dates
///
public class UnixDateTimeConverter : DateTimeConverterBase
{
///
/// Writes the JSON representation of the object.
///
/// The to write to.The value.The calling serializer.
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
long val;
if (value is DateTime)
{
val = ((DateTime)value).ToUnixTime();
}
else
{
throw new Exception("Expected date object value.");
}
writer.WriteValue(val);
}
///
/// Reads the JSON representation of the object.
///
/// The to read from.
/// Type of the object.
/// The existing value of object being read.
/// The calling serializer.
/// The object value.
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
JsonSerializer serializer)
{
if (reader.TokenType != JsonToken.Integer)
throw new Exception("Wrong Token Type");
var ticks = (long)reader.Value;
return ticks.FromUnixTime();
}
}
}