Skip to content

Commit 0c20d00

Browse files
committed
JastUsaLibrary: Fix JAST USA api integration not working due to changes in API #617
1 parent 4abbb99 commit 0c20d00

File tree

3 files changed

+44
-52
lines changed

3 files changed

+44
-52
lines changed

source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/DTOs/GetGamesResponse.cs

Lines changed: 36 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,32 @@ public class GetGamesResponse
2020
[JsonProperty("@type")]
2121
public string Type { get; set; }
2222

23-
[JsonProperty("hydra:member")]
24-
public HydraMember[] HydraMember { get; set; }
23+
[JsonProperty("products")]
24+
public Product[] Products { get; set; }
2525

26-
[JsonProperty("hydra:totalItems")]
27-
public int HydraTotalItems { get; set; }
26+
[JsonProperty("total")]
27+
public int Total { get; set; }
2828

29-
[JsonProperty("hydra:view")]
30-
public HydraView HydraView { get; set; }
29+
[JsonProperty("pages")]
30+
public int Pages { get; set; }
31+
}
32+
33+
public class Product
34+
{
35+
[JsonProperty("@id")]
36+
public string Id { get; set; }
37+
38+
[JsonProperty("@type")]
39+
public ProductType Type { get; set; }
40+
41+
[JsonProperty("variants")]
42+
public Variant[] Variants { get; set; }
3143

32-
[JsonProperty("hydra:search")]
33-
public HydraSearch HydraSearch { get; set; }
44+
[JsonProperty("variant")]
45+
public Variant Variant { get; set; }
3446
}
3547

36-
public class HydraMember
48+
public class Variant
3749
{
3850
[JsonProperty("@id")]
3951
public string Id { get; set; }
@@ -66,7 +78,7 @@ public class HydraMember
6678
public int GameId { get; set; }
6779

6880
[JsonProperty("userGameTags")]
69-
public UserGameTags UserGameTags { get; set; }
81+
public List<UserGameTag> UserGameTags { get; set; }
7082

7183
[JsonProperty("hasPatches_en_US")]
7284
public bool HasPatchesEnUs { get; set; }
@@ -132,47 +144,22 @@ public class Platform
132144
public JastPlatforms ZhHant { get; set; }
133145
}
134146

135-
public class UserGameTags
147+
public class UserGameTag
136148
{
137-
}
138-
139-
public class HydraSearch
140-
{
141-
[JsonProperty("@type")]
142-
public string Type { get; set; }
143-
144-
[JsonProperty("hydra:template")]
145-
public string HydraTemplate { get; set; }
146-
147-
[JsonProperty("hydra:variableRepresentation")]
148-
public string HydraVariableRepresentation { get; set; }
149-
150-
[JsonProperty("hydra:mapping")]
151-
public HydraMapping[] HydraMapping { get; set; }
152-
}
149+
[JsonProperty("@id")]
150+
public string Id { get; set; }
153151

154-
public class HydraMapping
155-
{
156152
[JsonProperty("@type")]
157-
public string Type { get; set; }
158-
159-
[JsonProperty("variable")]
160-
public string Variable { get; set; }
153+
public UserGameTagType Type { get; set; }
161154

162-
[JsonProperty("property")]
163-
public string Property { get; set; }
164-
165-
[JsonProperty("required")]
166-
public bool HydraMappingRequired { get; set; }
167-
}
155+
[JsonProperty("id")]
156+
public long UserGameTagId { get; set; }
168157

169-
public class HydraView
170-
{
171-
[JsonProperty("@id")]
172-
public string Id { get; set; }
158+
[JsonProperty("locale", NullValueHandling = NullValueHandling.Ignore)]
159+
public Locale? Locale { get; set; }
173160

174-
[JsonProperty("@type")]
175-
public string Type { get; set; }
161+
[JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
162+
public string UserGameTagType { get; set; }
176163
}
177164

178165
public enum Locale
@@ -191,6 +178,10 @@ public enum JastPlatforms { Linux, Mac, Windows };
191178

192179
public enum HydraMemberType { ProductVariant };
193180

181+
public enum ProductType { Product };
182+
183+
public enum UserGameTagType { UserGameTag };
184+
194185
internal static class Converter
195186
{
196187
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings

source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/External/JastUrls.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static class Api
1616
public static class Authentication
1717
{
1818
private const string RouteBase = "shop/";
19-
public static string AuthenticationToken => $"{BaseApiUrl}{RouteBase}authentication-token";
19+
public static string AuthenticationToken => $"{BaseApiUrl}{RouteBase}customers/token";
2020
public static string TokenRefresh(string refreshToken) => $"{BaseApiUrl}{RouteBase}authentication-refresh?refresh_token={refreshToken}";
2121
}
2222

source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/External/JastUsaApiClient.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,15 @@ public async Task<GameTranslationsResponse> GetGameTranslationsAsync(Authenticat
8080
return result.IsSuccess ? Serialization.FromJson<GameTranslationsResponse>(result.Content) : null;
8181
}
8282

83-
public async Task<List<HydraMember>> GetProductsAsync(AuthenticationToken token, CancellationToken cancellationToken = default)
83+
public async Task<List<Variant>> GetProductsAsync(AuthenticationToken token, CancellationToken cancellationToken = default)
8484
{
8585
var headers = new Dictionary<string, string>
8686
{
8787
["Authorization"] = $"Bearer {token.Token.UrlDecode()}",
8888
["Accept-Encoding"] = "utf-8"
8989
};
9090

91-
var products = new List<HydraMember>();
91+
var products = new List<Variant>();
9292
var page = 1;
9393
while (true)
9494
{
@@ -105,13 +105,14 @@ public async Task<List<HydraMember>> GetProductsAsync(AuthenticationToken token,
105105
}
106106

107107
var response = Serialization.FromJson<GetGamesResponse>(result.Content);
108-
products.AddRange(response.HydraMember);
109-
page++;
110-
111-
if (!response.HydraMember.Any())
108+
var variants = response.Products?.Select(x => x.Variant).ToList();
109+
products.AddRange(variants);
110+
if (!variants.Any() || page == response.Pages)
112111
{
113112
break;
114113
}
114+
115+
page++;
115116
}
116117

117118
return products;

0 commit comments

Comments
 (0)