-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
- Loading branch information
1 parent
0b2d8d9
commit ba46b20
Showing
11 changed files
with
210 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
Source/Lib/Trakt.NET/Objects/Post/Syncs/Collection/ITraktSyncCollectionRemovePost.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection | ||
{ | ||
/// <summary> | ||
/// A Trakt collection remove post, containing all movies, shows and / or episodes, | ||
/// which should be removed from the user's collection. | ||
/// </summary> | ||
public interface ITraktSyncCollectionRemovePost : ITraktSyncCollectionPost | ||
{ | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
.../Trakt.NET/Objects/Post/Syncs/Collection/Implementations/TraktSyncCollectionRemovePost.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection | ||
{ | ||
/// <summary> | ||
/// A Trakt collection remove post, containing all movies, shows and / or episodes, | ||
/// which should be removed from the user's collection. | ||
/// </summary> | ||
public class TraktSyncCollectionRemovePost : TraktSyncCollectionPost, ITraktSyncCollectionRemovePost | ||
{ | ||
} | ||
} |
13 changes: 13 additions & 0 deletions
13
...NET/Objects/Post/Syncs/Collection/Json/Factories/SyncCollectionRemovePostJsonIOFactory.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection.Json.Factories | ||
{ | ||
using Objects.Json; | ||
using Reader; | ||
using Writer; | ||
|
||
internal class SyncCollectionRemovePostJsonIOFactory : IJsonIOFactory<ITraktSyncCollectionRemovePost> | ||
{ | ||
public IObjectJsonReader<ITraktSyncCollectionRemovePost> CreateObjectReader() => new SyncCollectionRemovePostObjectJsonReader(); | ||
|
||
public IObjectJsonWriter<ITraktSyncCollectionRemovePost> CreateObjectWriter() => new SyncCollectionRemovePostObjectJsonWriter(); | ||
} | ||
} |
54 changes: 54 additions & 0 deletions
54
...rakt.NET/Objects/Post/Syncs/Collection/Json/Reader/ASyncCollectionPostObjectJsonReader.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection.Json.Reader | ||
{ | ||
using Newtonsoft.Json; | ||
using System; | ||
using System.Threading; | ||
using System.Threading.Tasks; | ||
using TraktNet.Objects.Json; | ||
|
||
internal abstract class ASyncCollectionPostObjectJsonReader<TSyncCollectionPost> : AObjectJsonReader<TSyncCollectionPost> | ||
where TSyncCollectionPost : ITraktSyncCollectionPost | ||
{ | ||
public override async Task<TSyncCollectionPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) | ||
{ | ||
CheckJsonTextReader(jsonReader); | ||
|
||
if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) | ||
{ | ||
TSyncCollectionPost traktSyncCollectionPost = Activator.CreateInstance<TSyncCollectionPost>(); | ||
var syncCollectionPostMovieArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostMovie>(); | ||
var syncCollectionPostShowArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostShow>(); | ||
var syncCollectionPostSeasonArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostSeason>(); | ||
var syncCollectionPostEpisodeArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostEpisode>(); | ||
|
||
while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) | ||
{ | ||
var propertyName = jsonReader.Value.ToString(); | ||
|
||
switch (propertyName) | ||
{ | ||
case JsonProperties.PROPERTY_NAME_MOVIES: | ||
traktSyncCollectionPost.Movies = await syncCollectionPostMovieArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
case JsonProperties.PROPERTY_NAME_SHOWS: | ||
traktSyncCollectionPost.Shows = await syncCollectionPostShowArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
case JsonProperties.PROPERTY_NAME_SEASONS: | ||
traktSyncCollectionPost.Seasons = await syncCollectionPostSeasonArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
case JsonProperties.PROPERTY_NAME_EPISODES: | ||
traktSyncCollectionPost.Episodes = await syncCollectionPostEpisodeArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
default: | ||
await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); | ||
break; | ||
} | ||
} | ||
|
||
return traktSyncCollectionPost; | ||
} | ||
|
||
return await Task.FromResult(default(TSyncCollectionPost)); | ||
} | ||
} | ||
} |
48 changes: 1 addition & 47 deletions
48
...Trakt.NET/Objects/Post/Syncs/Collection/Json/Reader/SyncCollectionPostObjectJsonReader.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,6 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection.Json.Reader | ||
{ | ||
using Newtonsoft.Json; | ||
using Objects.Json; | ||
using System.Threading; | ||
using System.Threading.Tasks; | ||
|
||
internal class SyncCollectionPostObjectJsonReader : AObjectJsonReader<ITraktSyncCollectionPost> | ||
internal class SyncCollectionPostObjectJsonReader : ASyncCollectionPostObjectJsonReader<ITraktSyncCollectionPost> | ||
{ | ||
public override async Task<ITraktSyncCollectionPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) | ||
{ | ||
CheckJsonTextReader(jsonReader); | ||
|
||
if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) | ||
{ | ||
ITraktSyncCollectionPost traktSyncCollectionPost = new TraktSyncCollectionPost(); | ||
var syncCollectionPostMovieArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostMovie>(); | ||
var syncCollectionPostShowArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostShow>(); | ||
var syncCollectionPostSeasonArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostSeason>(); | ||
var syncCollectionPostEpisodeArrayJsonReader = new ArrayJsonReader<ITraktSyncCollectionPostEpisode>(); | ||
|
||
while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) | ||
{ | ||
var propertyName = jsonReader.Value.ToString(); | ||
|
||
switch (propertyName) | ||
{ | ||
case JsonProperties.PROPERTY_NAME_MOVIES: | ||
traktSyncCollectionPost.Movies = await syncCollectionPostMovieArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
case JsonProperties.PROPERTY_NAME_SHOWS: | ||
traktSyncCollectionPost.Shows = await syncCollectionPostShowArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
case JsonProperties.PROPERTY_NAME_SEASONS: | ||
traktSyncCollectionPost.Seasons = await syncCollectionPostSeasonArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
case JsonProperties.PROPERTY_NAME_EPISODES: | ||
traktSyncCollectionPost.Episodes = await syncCollectionPostEpisodeArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); | ||
break; | ||
default: | ||
await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); | ||
break; | ||
} | ||
} | ||
|
||
return traktSyncCollectionPost; | ||
} | ||
|
||
return await Task.FromResult(default(ITraktSyncCollectionPost)); | ||
} | ||
} | ||
} |
6 changes: 6 additions & 0 deletions
6
...NET/Objects/Post/Syncs/Collection/Json/Reader/SyncCollectionRemovePostObjectJsonReader.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection.Json.Reader | ||
{ | ||
internal class SyncCollectionRemovePostObjectJsonReader : ASyncCollectionPostObjectJsonReader<ITraktSyncCollectionRemovePost> | ||
{ | ||
} | ||
} |
50 changes: 50 additions & 0 deletions
50
...rakt.NET/Objects/Post/Syncs/Collection/Json/Writer/ASyncCollectionPostObjectJsonWriter.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection.Json.Writer | ||
{ | ||
using Newtonsoft.Json; | ||
using System.Threading; | ||
using System.Threading.Tasks; | ||
using TraktNet.Objects.Json; | ||
|
||
internal class ASyncCollectionPostObjectJsonWriter<TSyncCollectionPost> : AObjectJsonWriter<TSyncCollectionPost> | ||
where TSyncCollectionPost : ITraktSyncCollectionPost | ||
{ | ||
public override async Task WriteObjectAsync(JsonTextWriter jsonWriter, TSyncCollectionPost obj, CancellationToken cancellationToken = default) | ||
{ | ||
CheckJsonTextWriter(jsonWriter); | ||
await jsonWriter.WriteStartObjectAsync(cancellationToken).ConfigureAwait(false); | ||
await WriteCollectionPostObjectAsync(jsonWriter, obj, cancellationToken).ConfigureAwait(false); | ||
await jsonWriter.WriteEndObjectAsync(cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
protected virtual async Task WriteCollectionPostObjectAsync(JsonTextWriter jsonWriter, TSyncCollectionPost obj, CancellationToken cancellationToken = default) | ||
{ | ||
if (obj.Movies != null) | ||
{ | ||
var syncCollectionPostMovieArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostMovie>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_MOVIES, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostMovieArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Movies, cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
if (obj.Shows != null) | ||
{ | ||
var syncCollectionPostShowArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostShow>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_SHOWS, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostShowArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Shows, cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
if (obj.Seasons != null) | ||
{ | ||
var syncCollectionPostSeasonArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostSeason>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_SEASONS, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostSeasonArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Seasons, cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
if (obj.Episodes != null) | ||
{ | ||
var syncCollectionPostEpisodeArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostEpisode>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_EPISODES, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostEpisodeArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Episodes, cancellationToken).ConfigureAwait(false); | ||
} | ||
} | ||
} | ||
} |
42 changes: 1 addition & 41 deletions
42
...Trakt.NET/Objects/Post/Syncs/Collection/Json/Writer/SyncCollectionPostObjectJsonWriter.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,46 +1,6 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection.Json.Writer | ||
{ | ||
using Newtonsoft.Json; | ||
using Objects.Json; | ||
using System.Threading; | ||
using System.Threading.Tasks; | ||
|
||
internal class SyncCollectionPostObjectJsonWriter : AObjectJsonWriter<ITraktSyncCollectionPost> | ||
internal class SyncCollectionPostObjectJsonWriter : ASyncCollectionPostObjectJsonWriter<ITraktSyncCollectionPost> | ||
{ | ||
public override async Task WriteObjectAsync(JsonTextWriter jsonWriter, ITraktSyncCollectionPost obj, CancellationToken cancellationToken = default) | ||
{ | ||
CheckJsonTextWriter(jsonWriter); | ||
await jsonWriter.WriteStartObjectAsync(cancellationToken).ConfigureAwait(false); | ||
|
||
if (obj.Movies != null) | ||
{ | ||
var syncCollectionPostMovieArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostMovie>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_MOVIES, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostMovieArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Movies, cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
if (obj.Shows != null) | ||
{ | ||
var syncCollectionPostShowArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostShow>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_SHOWS, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostShowArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Shows, cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
if (obj.Seasons != null) | ||
{ | ||
var syncCollectionPostSeasonArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostSeason>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_SEASONS, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostSeasonArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Seasons, cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
if (obj.Episodes != null) | ||
{ | ||
var syncCollectionPostEpisodeArrayJsonWriter = new ArrayJsonWriter<ITraktSyncCollectionPostEpisode>(); | ||
await jsonWriter.WritePropertyNameAsync(JsonProperties.PROPERTY_NAME_EPISODES, cancellationToken).ConfigureAwait(false); | ||
await syncCollectionPostEpisodeArrayJsonWriter.WriteArrayAsync(jsonWriter, obj.Episodes, cancellationToken).ConfigureAwait(false); | ||
} | ||
|
||
await jsonWriter.WriteEndObjectAsync(cancellationToken).ConfigureAwait(false); | ||
} | ||
} | ||
} |
6 changes: 6 additions & 0 deletions
6
...NET/Objects/Post/Syncs/Collection/Json/Writer/SyncCollectionRemovePostObjectJsonWriter.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
namespace TraktNet.Objects.Post.Syncs.Collection.Json.Writer | ||
{ | ||
internal class SyncCollectionRemovePostObjectJsonWriter : ASyncCollectionPostObjectJsonWriter<ITraktSyncCollectionRemovePost> | ||
{ | ||
} | ||
} |
58 changes: 58 additions & 0 deletions
58
...bjects.Post.Tests/Syncs/Collection/Implementations/TraktSyncCollectionRemovePost_Tests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
namespace TraktNet.Objects.Post.Tests.Syncs.Collection.Implementations | ||
{ | ||
using FluentAssertions; | ||
using System; | ||
using System.Collections.Generic; | ||
using Trakt.NET.Tests.Utility.Traits; | ||
using TraktNet.Objects.Post.Syncs.Collection; | ||
using Xunit; | ||
|
||
[Category("Objects.Post.Syncs.Collection.Implementations")] | ||
public class TraktSyncCollectionRemovePost_Tests | ||
{ | ||
[Fact] | ||
public void Test_TraktSyncCollectionRemovePost_Validate() | ||
{ | ||
ITraktSyncCollectionRemovePost syncCollectionRemovePost = new TraktSyncCollectionRemovePost(); | ||
|
||
// movies = null, shows = null, seasons = null, episodes = null | ||
Action act = () => syncCollectionRemovePost.Validate(); | ||
act.Should().Throw<ArgumentException>(); | ||
|
||
// movies = empty, shows = null, seasons = null, episodes = null | ||
syncCollectionRemovePost.Movies = new List<ITraktSyncCollectionPostMovie>(); | ||
act.Should().Throw<ArgumentException>(); | ||
|
||
// movies = empty, shows = empty, seasons = null, episodes = null | ||
syncCollectionRemovePost.Shows = new List<ITraktSyncCollectionPostShow>(); | ||
act.Should().Throw<ArgumentException>(); | ||
|
||
// movies = empty, shows = empty, seasons = empty, episodes = null | ||
syncCollectionRemovePost.Seasons = new List<ITraktSyncCollectionPostSeason>(); | ||
act.Should().Throw<ArgumentException>(); | ||
|
||
// movies = empty, shows = empty, seasons = empty, episodes = empty | ||
syncCollectionRemovePost.Episodes = new List<ITraktSyncCollectionPostEpisode>(); | ||
act.Should().Throw<ArgumentException>(); | ||
|
||
// movies with at least one item, shows = empty, seasons = empty, episodes = empty | ||
(syncCollectionRemovePost.Movies as List<ITraktSyncCollectionPostMovie>).Add(new TraktSyncCollectionPostMovie()); | ||
act.Should().NotThrow(); | ||
|
||
// movies = empty, shows with at least one item, seasons = empty, episodes = empty | ||
(syncCollectionRemovePost.Movies as List<ITraktSyncCollectionPostMovie>).Clear(); | ||
(syncCollectionRemovePost.Shows as List<ITraktSyncCollectionPostShow>).Add(new TraktSyncCollectionPostShow()); | ||
act.Should().NotThrow(); | ||
|
||
// movies = empty, shows = empty, seasons with at least one item, episodes = empty | ||
(syncCollectionRemovePost.Shows as List<ITraktSyncCollectionPostShow>).Clear(); | ||
(syncCollectionRemovePost.Seasons as List<ITraktSyncCollectionPostSeason>).Add(new TraktSyncCollectionPostSeason()); | ||
act.Should().NotThrow(); | ||
|
||
// movies = empty, shows = empty, seasons = empty, episodes with at least one item | ||
(syncCollectionRemovePost.Seasons as List<ITraktSyncCollectionPostSeason>).Clear(); | ||
(syncCollectionRemovePost.Episodes as List<ITraktSyncCollectionPostEpisode>).Add(new TraktSyncCollectionPostEpisode()); | ||
act.Should().NotThrow(); | ||
} | ||
} | ||
} |