diff --git a/Source/Lib/Trakt.NET/Objects/Authentication/Json/Reader/AuthorizationArrayJsonReader.cs b/Source/Lib/Trakt.NET/Objects/Authentication/Json/Reader/AuthorizationArrayJsonReader.cs new file mode 100644 index 0000000000..8bca21aacf --- /dev/null +++ b/Source/Lib/Trakt.NET/Objects/Authentication/Json/Reader/AuthorizationArrayJsonReader.cs @@ -0,0 +1,34 @@ +namespace TraktNet.Objects.Authentication.Json.Reader +{ + using Newtonsoft.Json; + using Objects.Json; + using System.Collections.Generic; + using System.Threading; + using System.Threading.Tasks; + + internal class AuthorizationArrayJsonReader : AArrayJsonReader + { + public override async Task> ReadArrayAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) + { + if (jsonReader == null) + return await Task.FromResult(default(IEnumerable)); + + if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartArray) + { + var authorizationReader = new AuthorizationObjectJsonReader(); + var authorizations = new List(); + ITraktAuthorization authorization = await authorizationReader.ReadObjectAsync(jsonReader, cancellationToken); + + while (authorization != null) + { + authorizations.Add(authorization); + authorization = await authorizationReader.ReadObjectAsync(jsonReader, cancellationToken); + } + + return authorizations; + } + + return await Task.FromResult(default(IEnumerable)); + } + } +} diff --git a/Source/Lib/Trakt.NET/Objects/Authentication/Json/Reader/DeviceArrayJsonReader.cs b/Source/Lib/Trakt.NET/Objects/Authentication/Json/Reader/DeviceArrayJsonReader.cs new file mode 100644 index 0000000000..36bce99799 --- /dev/null +++ b/Source/Lib/Trakt.NET/Objects/Authentication/Json/Reader/DeviceArrayJsonReader.cs @@ -0,0 +1,34 @@ +namespace TraktNet.Objects.Authentication.Json.Reader +{ + using Newtonsoft.Json; + using Objects.Json; + using System.Collections.Generic; + using System.Threading; + using System.Threading.Tasks; + + internal class DeviceArrayJsonReader : AArrayJsonReader + { + public override async Task> ReadArrayAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) + { + if (jsonReader == null) + return await Task.FromResult(default(IEnumerable)); + + if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartArray) + { + var deviceReader = new DeviceObjectJsonReader(); + var devices = new List(); + ITraktDevice device = await deviceReader.ReadObjectAsync(jsonReader, cancellationToken); + + while (device != null) + { + devices.Add(device); + device = await deviceReader.ReadObjectAsync(jsonReader, cancellationToken); + } + + return devices; + } + + return await Task.FromResult(default(IEnumerable)); + } + } +}