Skip to content
This repository was archived by the owner on Mar 16, 2025. It is now read-only.

Commit 6e36909

Browse files
[v2] Add person images (#674)
1 parent 47f246d commit 6e36909

File tree

10 files changed

+195
-2
lines changed

10 files changed

+195
-2
lines changed

src/libs/Trakt.NET/Internal/Json/SerializerContexts/JsonSerializerContextFactory.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ internal static JsonSerializerContext GetContext<TJsonObjectType>()
200200
{
201201
typeof(TraktPerson),
202202
typeof(TraktPersonIDs),
203+
typeof(TraktPersonImages),
203204
typeof(TraktPersonMinimal),
204205
typeof(TraktPersonSocialIDs)
205206
});
@@ -314,6 +315,7 @@ internal static JsonSerializerContext GetContext<TJsonObjectType>()
314315
private static readonly HashSet<Type> s_peopleJsonTypes = [
315316
typeof(TraktPerson),
316317
typeof(TraktPersonIDs),
318+
typeof(TraktPersonImages),
317319
typeof(TraktPersonMinimal),
318320
typeof(TraktPersonSocialIDs)
319321
];

src/libs/Trakt.NET/Internal/Json/SerializerContexts/PeopleJsonSerializerContext.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@ namespace TraktNET
66
{
77
[ExcludeFromCodeCoverage]
88
[JsonSerializable(typeof(TraktPerson))]
9+
[JsonSerializable(typeof(IReadOnlyList<TraktPerson>))]
910
[JsonSerializable(typeof(TraktPersonIDs))]
11+
[JsonSerializable(typeof(IReadOnlyList<TraktPersonIDs>))]
12+
[JsonSerializable(typeof(TraktPersonImages))]
13+
[JsonSerializable(typeof(IReadOnlyList<TraktPersonImages>))]
1014
[JsonSerializable(typeof(TraktPersonMinimal))]
15+
[JsonSerializable(typeof(IReadOnlyList<TraktPersonMinimal>))]
1116
[JsonSerializable(typeof(TraktPersonSocialIDs))]
17+
[JsonSerializable(typeof(IReadOnlyList<TraktPersonSocialIDs>))]
1218
public sealed partial class PeopleJsonSerializerContext : JsonSerializerContext
1319
{
1420
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace TraktNET
2+
{
3+
/// <summary>A collection of Trakt person image URLs.</summary>
4+
public record class TraktPersonImages
5+
{
6+
/// <summary>A list of Headshot image URLs.</summary>
7+
public List<string>? Headshot { get; set; }
8+
9+
/// <summary>A list of Fanart image URLs.</summary>
10+
public List<string>? Fanart { get; set; }
11+
}
12+
}

src/libs/Trakt.NET/Json/People/TraktPersonMinimal.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,11 @@ public record class TraktPersonMinimal
1414
/// </summary>
1515
[JsonPropertyName("ids")]
1616
public TraktPersonIDs? IDs { get; set; }
17+
18+
/// <summary>
19+
/// The collection of image URLs for the person.
20+
/// See also <seealso cref="TraktPersonImages" />.
21+
/// </summary>
22+
public TraktPersonImages? Images { get; set; }
1723
}
1824
}
File renamed without changes.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"name": "Bryan Cranston",
3+
"ids": {
4+
"trakt": 297737,
5+
"slug": "bryan-cranston",
6+
"imdb": "nm0186505",
7+
"tmdb": 17419,
8+
"tvrage": null
9+
},
10+
"social_ids": {
11+
"twitter": "BryanCranston",
12+
"facebook": "thebryancranston",
13+
"instagram": "bryancranston",
14+
"wikipedia": null
15+
},
16+
"biography": "Bryan Lee Cranston (born March 7, 1956) is an American actor, director, and producer who is mainly known for portraying Walter White in the AMC crime drama series Breaking Bad (2008–2013) and Hal in the Fox sitcom Malcolm in the Middle (2000–2006).",
17+
"birthday": "1956-03-07",
18+
"death": null,
19+
"birthplace": "Hollywood, Los Angeles, California, USA",
20+
"homepage": null,
21+
"known_for_department": "acting",
22+
"gender": "male",
23+
"updated_at": "2024-03-22T08:01:24.000Z",
24+
"images": {
25+
"headshot": [
26+
"walter-r2.trakt.tv/images/people/000/297/737/headshots/thumb/ef96a1e565.jpg.webp"
27+
],
28+
"fanart": [
29+
"walter-r2.trakt.tv/images/people/000/297/737/fanarts/medium/ec609f5bcc.jpg.webp"
30+
]
31+
}
32+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "Bryan Cranston",
3+
"ids": {
4+
"trakt": 297737,
5+
"slug": "bryan-cranston",
6+
"imdb": "nm0186505",
7+
"tmdb": 17419,
8+
"tvrage": null
9+
},
10+
"images": {
11+
"headshot": [
12+
"walter-r2.trakt.tv/images/people/000/297/737/headshots/thumb/ef96a1e565.jpg.webp"
13+
],
14+
"fanart": [
15+
"walter-r2.trakt.tv/images/people/000/297/737/fanarts/medium/ec609f5bcc.jpg.webp"
16+
]
17+
}
18+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"headshot": [
3+
"walter-r2.trakt.tv/images/people/000/297/737/headshots/thumb/ef96a1e565.jpg.webp"
4+
],
5+
"fanart": [
6+
"walter-r2.trakt.tv/images/people/000/297/737/fanarts/medium/ec609f5bcc.jpg.webp"
7+
]
8+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
namespace TraktNET.Json.Persons
2+
{
3+
public sealed class TraktPersonImagesTests
4+
{
5+
[Fact]
6+
public void TestTraktPersonImagesConstructor()
7+
{
8+
var personImages = new TraktPersonImages();
9+
10+
personImages.Headshot.ShouldBeNull();
11+
personImages.Fanart.ShouldBeNull();
12+
}
13+
14+
[Fact]
15+
public async Task TestTraktPersonImagesFromJson()
16+
{
17+
TraktPersonImages? personImages = await TestUtility.DeserializeJsonAsync<TraktPersonImages>("People\\personimages.json");
18+
19+
personImages.ShouldNotBeNull();
20+
21+
personImages!.Headshot.ShouldNotBeNull();
22+
personImages!.Headshot!.Count.ShouldBe(1);
23+
personImages!.Headshot!.ShouldBe([ "walter-r2.trakt.tv/images/people/000/297/737/headshots/thumb/ef96a1e565.jpg.webp" ]);
24+
25+
personImages!.Fanart.ShouldNotBeNull();
26+
personImages!.Fanart!.Count.ShouldBe(1);
27+
personImages!.Fanart!.ShouldBe([ "walter-r2.trakt.tv/images/people/000/297/737/fanarts/medium/ec609f5bcc.jpg.webp" ]);
28+
}
29+
}
30+
}

src/tests/libs/Trakt.NET.Json.Tests/People/TraktPersonTests.cs

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,37 @@ public async Task TestTraktPersonFromJsonMinimal()
3939
}
4040

4141
[Fact]
42-
public async Task TestTraktPersonFromJson()
42+
public async Task TestTraktPersonFromJsonMinimalWithImages()
4343
{
44-
TraktPerson? person = await TestUtility.DeserializeJsonAsync<TraktPerson>("People\\person.json");
44+
TraktPersonMinimal? person = await TestUtility.DeserializeJsonAsync<TraktPersonMinimal>("People\\person_minimal_images.json");
45+
46+
person.ShouldNotBeNull();
47+
48+
person!.Name.ShouldBe("Bryan Cranston");
49+
50+
person!.IDs.ShouldNotBeNull();
51+
person!.IDs!.Trakt.ShouldBe(297737U);
52+
person!.IDs!.Slug.ShouldBe("bryan-cranston");
53+
person!.IDs!.IMDB.ShouldBe("nm0186505");
54+
person!.IDs!.TMDB.ShouldBe(17419U);
55+
person!.IDs!.HasAnyID.ShouldBe(true);
56+
person!.IDs!.BestID.ShouldBe("bryan-cranston");
57+
58+
person!.Images.ShouldNotBeNull();
59+
60+
person!.Images!.Headshot.ShouldNotBeNull();
61+
person!.Images!.Headshot!.Count.ShouldBe(1);
62+
person!.Images!.Headshot!.ShouldBe([ "walter-r2.trakt.tv/images/people/000/297/737/headshots/thumb/ef96a1e565.jpg.webp" ]);
63+
64+
person!.Images!.Fanart.ShouldNotBeNull();
65+
person!.Images!.Fanart!.Count.ShouldBe(1);
66+
person!.Images!.Fanart!.ShouldBe([ "walter-r2.trakt.tv/images/people/000/297/737/fanarts/medium/ec609f5bcc.jpg.webp" ]);
67+
}
68+
69+
[Fact]
70+
public async Task TestTraktPersonFromJsonFull()
71+
{
72+
TraktPerson? person = await TestUtility.DeserializeJsonAsync<TraktPerson>("People\\person_full.json");
4573

4674
person.ShouldNotBeNull();
4775

@@ -78,5 +106,56 @@ public async Task TestTraktPersonFromJson()
78106
person!.Gender.ShouldBe(TraktGender.Male);
79107
person!.UpdatedAt.ShouldBe(TestUtility.ParseUTCDateTime("2024-03-22T08:01:24.000Z"));
80108
}
109+
110+
[Fact]
111+
public async Task TestTraktPersonFromJsonFullWithImages()
112+
{
113+
TraktPerson? person = await TestUtility.DeserializeJsonAsync<TraktPerson>("People\\person_full_images.json");
114+
115+
person.ShouldNotBeNull();
116+
117+
person!.Name.ShouldBe("Bryan Cranston");
118+
119+
person!.IDs.ShouldNotBeNull();
120+
person!.IDs!.Trakt.ShouldBe(297737U);
121+
person!.IDs!.Slug.ShouldBe("bryan-cranston");
122+
person!.IDs!.IMDB.ShouldBe("nm0186505");
123+
person!.IDs!.TMDB.ShouldBe(17419U);
124+
person!.IDs!.HasAnyID.ShouldBe(true);
125+
person!.IDs!.BestID.ShouldBe("bryan-cranston");
126+
127+
person!.SocialIDs.ShouldNotBeNull();
128+
person!.SocialIDs!.Twitter.ShouldBe("BryanCranston");
129+
person!.SocialIDs!.Facebook.ShouldBe("thebryancranston");
130+
person!.SocialIDs!.Instagram.ShouldBe("bryancranston");
131+
person!.SocialIDs!.Wikipedia.ShouldBeNull();
132+
133+
person!.Biography.ShouldBe("Bryan Lee Cranston (born March 7, 1956) is an American actor, director, and producer who "
134+
+ "is mainly known for portraying Walter White in the AMC crime drama series Breaking Bad (2008–2013) and Hal in "
135+
+ "the Fox sitcom Malcolm in the Middle (2000–2006).");
136+
137+
#if NET7_0_OR_GREATER
138+
person!.Birthday.ShouldBe(TestUtility.ParseDate("1956-03-07"));
139+
#else
140+
141+
person!.Birthday.ShouldBe(TestUtility.ParseUTCDateTime("1956-03-07T00:00:00.000Z"));
142+
#endif
143+
person!.Death.ShouldBeNull();
144+
person!.Birthplace.ShouldBe("Hollywood, Los Angeles, California, USA");
145+
person!.Homepage.ShouldBeNull();
146+
person!.KnownForDepartment.ShouldBe(TraktKnownForDepartment.Acting);
147+
person!.Gender.ShouldBe(TraktGender.Male);
148+
person!.UpdatedAt.ShouldBe(TestUtility.ParseUTCDateTime("2024-03-22T08:01:24.000Z"));
149+
150+
person!.Images.ShouldNotBeNull();
151+
152+
person!.Images!.Headshot.ShouldNotBeNull();
153+
person!.Images!.Headshot!.Count.ShouldBe(1);
154+
person!.Images!.Headshot!.ShouldBe([ "walter-r2.trakt.tv/images/people/000/297/737/headshots/thumb/ef96a1e565.jpg.webp" ]);
155+
156+
person!.Images!.Fanart.ShouldNotBeNull();
157+
person!.Images!.Fanart!.Count.ShouldBe(1);
158+
person!.Images!.Fanart!.ShouldBe([ "walter-r2.trakt.tv/images/people/000/297/737/fanarts/medium/ec609f5bcc.jpg.webp" ]);
159+
}
81160
}
82161
}

0 commit comments

Comments
 (0)