Source

stacky / trunk / source / Stacky / Helpers / UnixDateTimeConverter.cs

lfoust 846c496 





TheHurt b649161 


lfoust 846c496 

TheHurt b649161 






lfoust dfd1c92 



lfoust 846c496 
lfoust dfd1c92 


lfoust 846c496 
TheHurt b649161 





lfoust 846c496 





lfoust 73ab0e3 
lfoust 846c496 






lfoust dfd1c92 






lfoust 73ab0e3 
lfoust dfd1c92 
lfoust 846c496 
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace Stacky
{
    /// <summary>
    /// Class for converting Json unix time to date time.
    /// </summary>
    public class UnixDateTimeConverter : DateTimeConverterBase
    {
        /// <summary>
        /// Reads the JSON representation of the object.
        /// </summary>
        /// <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
        /// <param name="objectType">Type of the object.</param>
        /// <param name="serializer">The calling serializer.</param>
        /// <returns>The <see cref="System.DateTime"/>.</returns>
        //public override object ReadJson(JsonReader reader, Type objectType, JsonSerializer serializer)
        //{
        //    if (reader.TokenType != JsonToken.Integer)
        //        throw new Exception("Wrong Token Type");

        //    long ticks = (long)reader.Value;
        //    return ticks.FromUnixTime();
        //}

        /// <summary>
        /// Writes the JSON representation of the object.
        /// </summary>
        /// <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
        /// <param name="value">The <see cref="System.DateTime"/>.</param>
        /// <param name="serializer">The calling serializer.</param>
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            long val;
            if (value is DateTime)
            {
                DateTime dateTime = (DateTime)value;
                val = UnixDateTime.UnixTimeFromDate(dateTime);
            }
            else
            {
                throw new Exception("Expected date object value.");
            }
            writer.WriteValue(val);
        }

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType != JsonToken.Integer)
                throw new Exception("Wrong Token Type");

            long ticks = (long)reader.Value;
            return UnixDateTime.DateFromUnixTime(ticks);
        }
    }
}