Click here to Skip to main content
15,881,687 members
Articles / Programming Languages / C# 4.0

Gett.NET - A library for Ge.tt Web Services

Rate me:
Please Sign up or sign in to vote.
4.98/5 (14 votes)
18 Jan 2016CPOL7 min read 53.9K   1.3K   45  
Use Ge.tt Web Services for real-time file publishing and sharing.
#region License information
/*

  Copyright (c) 2012 Togocoder (http://www.codeproject.com/Members/Kim-Togo)
 
  This file is part of Gett.NET library that uses the Ge.tt REST API, http://ge.tt/developers

  Gett.NET is a free library: you can redistribute it and/or modify as nessery
  it under the terms of The Code Project Open License (CPOL) as published by
  the The Code Project, either version 1.02 of the License, or (at your option) any later version.

  Gett.NET is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY OF ANY KIND. The software is provided "as-is".
 
  Please read the The Code Project Open License (CPOL) at http://www.codeproject.com/info/cpol10.aspx

  I would appreciate getting an email, if you choose to use this library in your own work.
  Send an email to togocoder(at)gmail.com with a little description of your work, thanks! :-)

  ---
  This class handles converting an Unix timestamp to DateTime class.
  It is written by Christophe Geers on September 25, 2011. (About http://cgeers.com/about/)
  
  Please see http://cgeers.com/2011/09/25/writing-a-custom-json-net-datetime-converter/
  for the orginal source code.
  
  It is a JsonConverter type for Json.NET.
*/
#endregion

using System;

namespace Newtonsoft.Json.Converters
{
  /// <summary>
  /// Convert Unix time to and from DateTime.
  /// </summary>
  public class UnixDateTimeConverter : DateTimeConverterBase
  {
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
      if (reader.TokenType != JsonToken.Integer)
      {
        throw new Exception(String.Format("Unexpected token parsing date. Expected Integer, got {0}.", reader.TokenType));
      }

      long ticks = (long)reader.Value;
      DateTime date = new DateTime(1970, 1, 1);
      date = date.AddSeconds(ticks);

      return date;
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
      long ticks;
      if (value is DateTime)
      {
        DateTime epoc = new DateTime(1970, 1, 1);
        TimeSpan delta = ((DateTime)value) - epoc;
        if (delta.TotalSeconds < 0)
        {
          throw new ArgumentOutOfRangeException("Unix epoc starts January 1st, 1970");
        }

        ticks = (long)delta.TotalSeconds;
      }
      else
      {
        throw new Exception("Expected date object value.");
      }

      writer.WriteValue(ticks);
    }
  }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer Miralix
Denmark Denmark
Has worked as a programmer since 1999, starting with C++/MFC, Java, PHP and MySQL. Now it is all about C# (my favorite programming language), MS SQL, Azure and Xamarin (iOS/Android/WP8)

My primary work is to create applications that interacts with PABC/PBX, Microsoft Lync / UCMA.

Comments and Discussions