Skip to content

Commit

Permalink
GH-555: Rename users/{id}/recommendations/{type}/{sort} request to …
Browse files Browse the repository at this point in the history
…`users/{id}/favorites/{type}/{sort}`

- rename URLs
- rename `ITraktRecommendation` => `ITraktFavorite`
- rename `UserPersonalRecommendationsRequest` => `UserFavoritesRequest`
- rename `TraktRecommendationObjectType` => `TraktFavoriteObjectType`
  • Loading branch information
henrikfroehling committed Jul 21, 2023
1 parent 2568539 commit b62bbe9
Show file tree
Hide file tree
Showing 34 changed files with 1,890 additions and 1,889 deletions.
27 changes: 27 additions & 0 deletions Source/Lib/Trakt.NET/Enums/TraktFavoriteObjectType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
namespace TraktNet.Enums
{
/// <summary>Determines the type of an object in a favorite item.</summary>
public sealed class TraktFavoriteObjectType : TraktEnumeration
{
/// <summary>An invalid object type.</summary>
public static TraktFavoriteObjectType Unspecified { get; } = new TraktFavoriteObjectType();

/// <summary>The recommendation contains a movie.</summary>
public static TraktFavoriteObjectType Movie { get; } = new TraktFavoriteObjectType(1, "movie", "movies", "Movie");

/// <summary>The recommendation contains a show.</summary>
public static TraktFavoriteObjectType Show { get; } = new TraktFavoriteObjectType(2, "show", "shows", "Show");

/// <summary>
/// Initializes a new instance of the <see cref="TraktFavoriteObjectType" /> class.<para />
/// The initialized <see cref="TraktFavoriteObjectType" /> is invalid.
/// </summary>
public TraktFavoriteObjectType()
{
}

private TraktFavoriteObjectType(int value, string objectName, string uriName, string displayName) : base(value, objectName, uriName, displayName)
{
}
}
}
27 changes: 0 additions & 27 deletions Source/Lib/Trakt.NET/Enums/TraktRecommendationObjectType.cs

This file was deleted.

10 changes: 5 additions & 5 deletions Source/Lib/Trakt.NET/Modules/TraktSyncModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public Task<TraktResponse<ITraktSyncLastActivities>> GetLastActivitiesAsync(Canc
/// See <a href="https://trakt.docs.apiary.io/#reference/sync/get-personal-recommendations/get-personal-recommendations">"Trakt API Doc - Sync: Personal Recommendations"</a> for more information.
/// </para>
/// </summary>
/// <param name="recommendationObjectType">Determines, which type of recommendation items should be queried. See also <seealso cref="TraktRecommendationObjectType" />.</param>
/// <param name="recommendationObjectType">Determines, which type of recommendation items should be queried. See also <seealso cref="TraktFavoriteObjectType" />.</param>
/// <param name="sortOrder">
/// The recommendations sort order. See also <seealso cref="TraktWatchlistSortOrder" />.
/// Will be ignored, if the given array contains a number higher than 10 or below 1 or if it contains more than ten numbers.
Expand All @@ -85,11 +85,11 @@ public Task<TraktResponse<ITraktSyncLastActivities>> GetLastActivitiesAsync(Canc
/// Propagates notification that the request should be canceled.<para/>
/// If provided, the exception <see cref="OperationCanceledException" /> should be catched.
/// </param>
/// <returns>A list of <see cref="ITraktRecommendation" /> instances.</returns>
/// <returns>A list of <see cref="ITraktFavorite" /> instances.</returns>
/// <exception cref="TraktException">Thrown, if the request fails.</exception>
public Task<TraktPagedResponse<ITraktRecommendation>> GetPersonalRecommendationsAsync(TraktRecommendationObjectType recommendationObjectType = null,
TraktWatchlistSortOrder sortOrder = null, TraktExtendedInfo extendedInfo = null,
TraktPagedParameters pagedParameters = null, CancellationToken cancellationToken = default)
public Task<TraktPagedResponse<ITraktFavorite>> GetPersonalRecommendationsAsync(TraktFavoriteObjectType recommendationObjectType = null,
TraktWatchlistSortOrder sortOrder = null, TraktExtendedInfo extendedInfo = null,
TraktPagedParameters pagedParameters = null, CancellationToken cancellationToken = default)
{
var request = new SyncPersonalRecommendationsRequest
{
Expand Down
26 changes: 13 additions & 13 deletions Source/Lib/Trakt.NET/Modules/TraktUsersModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1306,39 +1306,39 @@ public Task<TraktPagedResponse<ITraktHistoryItem>> GetWatchedHistoryAsync(string
}

/// <summary>
/// Gets an user's personal recommendations for movies and / or shows.
/// Gets an user's favorite movies and / or shows.
/// <para>OAuth authorization required.</para>
/// <para>
/// See <a href="https://trakt.docs.apiary.io/#reference/users/personal-recommendations/get-personal-recommendations">"Trakt API Doc - Users: Personal Recommendations"</a> for more information.
/// See <a href="https://trakt.docs.apiary.io/#reference/users/favorites/get-favorites">"Trakt API Doc - Users: Favorites"</a> for more information.
/// </para>
/// </summary>
/// <param name="usernameOrSlug">The username or slug of the user, for which the recommendations should be queried.</param>
/// <param name="recommendationObjectType">Determines, which type of recommendation items should be queried. See also <seealso cref="TraktRecommendationObjectType" />.</param>
/// <param name="usernameOrSlug">The username or slug of the user, for which the favorites should be queried.</param>
/// <param name="favoriteObjectType">Determines, which type of favorites items should be queried. See also <seealso cref="TraktFavoriteObjectType" />.</param>
/// <param name="sortOrder">
/// The recommendations sort order. See also <seealso cref="TraktWatchlistSortOrder" />.
/// The favorites sort order. See also <seealso cref="TraktWatchlistSortOrder" />.
/// Will be ignored, if the given array contains a number higher than 10 or below 1 or if it contains more than ten numbers.
/// Will be ignored, if the given <paramref name="recommendationObjectType" /> is null or unspecified.
/// Will be ignored, if the given <paramref name="favoriteObjectType" /> is null or unspecified.
/// </param>
/// <param name="extendedInfo">
/// The extended info, which determines how much data about the recommendation items should be queried.
/// The extended info, which determines how much data about the favorited items should be queried.
/// See also <seealso cref="TraktExtendedInfo" />.
/// </param>
/// <param name="pagedParameters">Specifies pagination parameters. <see cref="TraktPagedParameters" />.</param>
/// <param name="cancellationToken">
/// Propagates notification that the request should be canceled.<para/>
/// If provided, the exception <see cref="OperationCanceledException" /> should be catched.
/// </param>
/// <returns>A list of <see cref="ITraktRecommendation" /> instances.</returns>
/// <returns>A list of <see cref="ITraktFavorite" /> instances.</returns>
/// <exception cref="TraktException">Thrown, if the request fails.</exception>
/// <exception cref="TraktRequestValidationException">Thrown, if validation of request data fails.</exception>
public Task<TraktPagedResponse<ITraktRecommendation>> GetPersonalRecommendationsAsync(string usernameOrSlug, TraktRecommendationObjectType recommendationObjectType = null,
TraktWatchlistSortOrder sortOrder = null, TraktExtendedInfo extendedInfo = null,
TraktPagedParameters pagedParameters = null, CancellationToken cancellationToken = default)
public Task<TraktPagedResponse<ITraktFavorite>> GetFavoritesAsync(string usernameOrSlug, TraktFavoriteObjectType favoriteObjectType = null,
TraktWatchlistSortOrder sortOrder = null, TraktExtendedInfo extendedInfo = null,
TraktPagedParameters pagedParameters = null, CancellationToken cancellationToken = default)
{
var request = new UserPersonalRecommendationsRequest
var request = new UserFavoritesRequest
{
Username = usernameOrSlug,
Type = recommendationObjectType,
Type = favoriteObjectType,
Sort = sortOrder,
ExtendedInfo = extendedInfo,
Page = pagedParameters?.Page,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,33 @@
using Shows;
using System;

/// <summary>A Trakt recommendation.</summary>
public interface ITraktRecommendation
/// <summary>A Trakt favorite.</summary>
public interface ITraktFavorite
{
/// <summary>Gets or sets the id of this recommendation item.</summary>
/// <summary>Gets or sets the id of this favorite item.</summary>
ulong? Id { get; set; }

/// <summary>Gets or sets the recommendation rank.</summary>
/// <summary>Gets or sets the favorite rank.</summary>
int? Rank { get; set; }

/// <summary>Gets or sets the UTC datetime, when the recommendation was listed.</summary>
/// <summary>Gets or sets the UTC datetime, when the favorite was listed.</summary>
DateTime? ListedAt { get; set; }

/// <summary>Gets or sets the recommendation item type. See also <seealso cref="TraktRecommendationObjectType" />.<para>Nullable</para></summary>
TraktRecommendationObjectType Type { get; set; }
/// <summary>Gets or sets the favorite item type. See also <seealso cref="TraktFavoriteObjectType" />.<para>Nullable</para></summary>
TraktFavoriteObjectType Type { get; set; }

/// <summary>Gets or sets the recommendation notes.</summary>
/// <summary>Gets or sets the favorite notes.</summary>
string Notes { get; set; }

/// <summary>
/// Gets or sets the movie, if <see cref="Type" /> is <see cref="TraktRecommendationObjectType.Movie" />.
/// Gets or sets the movie, if <see cref="Type" /> is <see cref="TraktFavoriteObjectType.Movie" />.
/// See also <seealso cref="ITraktShow" />.
/// <para>Nullable</para>
/// </summary>
ITraktMovie Movie { get; set; }

/// <summary>
/// Gets or sets the show, if <see cref="Type" /> is <see cref="TraktRecommendationObjectType.Show" />.
/// Gets or sets the show, if <see cref="Type" /> is <see cref="TraktFavoriteObjectType.Show" />.
/// See also <seealso cref="ITraktShow" />.
/// <para>Nullable</para>
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,33 @@
using Shows;
using System;

/// <summary>A Trakt recommendation.</summary>
public class TraktRecommendation : ITraktRecommendation
/// <summary>A Trakt favorite.</summary>
public class TraktFavorite : ITraktFavorite
{
/// <summary>Gets or sets the id of this recommendation item.</summary>
/// <summary>Gets or sets the id of this favorite item.</summary>
public ulong? Id { get; set; }

/// <summary>Gets or sets the recommendation rank.</summary>
/// <summary>Gets or sets the favorite rank.</summary>
public int? Rank { get; set; }

/// <summary>Gets or sets the UTC datetime, when the recommendation was listed.</summary>
/// <summary>Gets or sets the UTC datetime, when the favorite was listed.</summary>
public DateTime? ListedAt { get; set; }

/// <summary>Gets or sets the recommendation item type. See also <seealso cref="TraktRecommendationObjectType" />.<para>Nullable</para></summary>
public TraktRecommendationObjectType Type { get; set; }
/// <summary>Gets or sets the favorite item type. See also <seealso cref="TraktFavoriteObjectType" />.<para>Nullable</para></summary>
public TraktFavoriteObjectType Type { get; set; }

/// <summary>Gets or sets the recommendation notes.</summary>
/// <summary>Gets or sets the favorite notes.</summary>
public string Notes { get; set; }

/// <summary>
/// Gets or sets the movie, if <see cref="Type" /> is <see cref="TraktRecommendationObjectType.Movie" />.
/// Gets or sets the movie, if <see cref="Type" /> is <see cref="TraktFavoriteObjectType.Movie" />.
/// See also <seealso cref="ITraktShow" />.
/// <para>Nullable</para>
/// </summary>
public ITraktMovie Movie { get; set; }

/// <summary>
/// Gets or sets the show, if <see cref="Type" /> is <see cref="TraktRecommendationObjectType.Show" />.
/// Gets or sets the show, if <see cref="Type" /> is <see cref="TraktFavoriteObjectType.Show" />.
/// See also <seealso cref="ITraktShow" />.
/// <para>Nullable</para>
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace TraktNet.Objects.Get.Users.Json.Factories
{
using Get.Users.Json.Reader;
using Get.Users.Json.Writer;
using Objects.Json;

internal class FavoriteJsonIOFactory : IJsonIOFactory<ITraktFavorite>
{
public IObjectJsonReader<ITraktFavorite> CreateObjectReader() => new FavoriteObjectJsonReader();

public IObjectJsonWriter<ITraktFavorite> CreateObjectWriter() => new FavoriteObjectJsonWriter();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
using System.Threading;
using System.Threading.Tasks;

internal class RecommendationObjectJsonReader : AObjectJsonReader<ITraktRecommendation>
internal class FavoriteObjectJsonReader : AObjectJsonReader<ITraktFavorite>
{
public override async Task<ITraktRecommendation> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
public override async Task<ITraktFavorite> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
{
CheckJsonTextReader(jsonReader);

if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
{
ITraktRecommendation traktRecommendation = new TraktRecommendation();
ITraktFavorite traktFavorite = new TraktFavorite();

while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
{
Expand All @@ -29,38 +29,38 @@ public override async Task<ITraktRecommendation> ReadObjectAsync(JsonTextReader
var value = await JsonReaderHelper.ReadUnsignedLongValueAsync(jsonReader, cancellationToken);

if (value.First)
traktRecommendation.Id = value.Second;
traktFavorite.Id = value.Second;

break;
}
case JsonProperties.PROPERTY_NAME_RANK:
traktRecommendation.Rank = await jsonReader.ReadAsInt32Async(cancellationToken).ConfigureAwait(false);
traktFavorite.Rank = await jsonReader.ReadAsInt32Async(cancellationToken).ConfigureAwait(false);
break;
case JsonProperties.PROPERTY_NAME_LISTED_AT:
{
var value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken).ConfigureAwait(false);

if (value.First)
traktRecommendation.ListedAt = value.Second;
traktFavorite.ListedAt = value.Second;

break;
}
case JsonProperties.PROPERTY_NAME_TYPE:
traktRecommendation.Type = await JsonReaderHelper.ReadEnumerationValueAsync<TraktRecommendationObjectType>(jsonReader, cancellationToken).ConfigureAwait(false);
traktFavorite.Type = await JsonReaderHelper.ReadEnumerationValueAsync<TraktFavoriteObjectType>(jsonReader, cancellationToken).ConfigureAwait(false);
break;
case JsonProperties.PROPERTY_NAME_NOTES:
traktRecommendation.Notes = await jsonReader.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
traktFavorite.Notes = await jsonReader.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
break;
case JsonProperties.PROPERTY_NAME_MOVIE:
{
var movieObjectReader = new MovieObjectJsonReader();
traktRecommendation.Movie = await movieObjectReader.ReadObjectAsync(jsonReader, cancellationToken).ConfigureAwait(false);
traktFavorite.Movie = await movieObjectReader.ReadObjectAsync(jsonReader, cancellationToken).ConfigureAwait(false);
break;
}
case JsonProperties.PROPERTY_NAME_SHOW:
{
var showObjectReader = new ShowObjectJsonReader();
traktRecommendation.Show = await showObjectReader.ReadObjectAsync(jsonReader, cancellationToken).ConfigureAwait(false);
traktFavorite.Show = await showObjectReader.ReadObjectAsync(jsonReader, cancellationToken).ConfigureAwait(false);
break;
}
default:
Expand All @@ -69,10 +69,10 @@ public override async Task<ITraktRecommendation> ReadObjectAsync(JsonTextReader
}
}

return traktRecommendation;
return traktFavorite;
}

return await Task.FromResult(default(ITraktRecommendation));
return await Task.FromResult(default(ITraktFavorite));
}
}
}
Loading

0 comments on commit b62bbe9

Please sign in to comment.