diff --git a/FeedlySharp/Extensions/JsonExtensions.cs b/FeedlySharp/Extensions/JsonExtensions.cs index 1bfc117..1a2e9a4 100644 --- a/FeedlySharp/Extensions/JsonExtensions.cs +++ b/FeedlySharp/Extensions/JsonExtensions.cs @@ -27,6 +27,28 @@ namespace FeedlySharp.Extensions + public class TimeSpanConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteValue(((TimeSpan)value).TotalSeconds); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + double doubleVal; + bool isSuccess = Double.TryParse(reader.Value.ToString(), out doubleVal); + return reader.Value == null || !isSuccess ? default(TimeSpan) : TimeSpan.FromSeconds(doubleVal); + } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(TimeSpan); + } + } + + + public class UnixDateTimeConverter : DateTimeConverterBase { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) diff --git a/FeedlySharp/FeedlyClient.cs b/FeedlySharp/FeedlyClient.cs index e2a3aa7..8ad9e82 100644 --- a/FeedlySharp/FeedlyClient.cs +++ b/FeedlySharp/FeedlyClient.cs @@ -16,7 +16,7 @@ namespace FeedlySharp private readonly string RedirectUri; - private string CloudUri { get { return GetCloudUri(CloudEnvironment.Production); } } + private string CloudUri { get { return GetCloudUri(Environment); } } private FeedlyHttpClient Client { get; set; } diff --git a/FeedlySharp/Models/Responses.cs b/FeedlySharp/Models/Responses.cs index dfe328c..3179d1c 100644 --- a/FeedlySharp/Models/Responses.cs +++ b/FeedlySharp/Models/Responses.cs @@ -1,4 +1,6 @@ -using System; +using FeedlySharp.Extensions; +using Newtonsoft.Json; +using System; namespace FeedlySharp.Models { @@ -14,16 +16,22 @@ namespace FeedlySharp.Models } + [JsonObject] public class AccessTokenResponse { public string Id { get; set; } + [JsonProperty("access_token")] public string AccessToken { get; set; } - public int ExpiresIn { get; set; } + [JsonProperty("expires_in")] + [JsonConverter(typeof(TimeSpanConverter))] + public TimeSpan ExpiresIn { get; set; } + [JsonProperty("refresh_token")] public string RefreshToken { get; set; } + [JsonProperty("plan")] public FeedlyUserAccountPlan UserAccountPlan { get; set; } }