Skip to content

Commit

Permalink
Add GetMapInfos for NadeoServices
Browse files Browse the repository at this point in the history
  • Loading branch information
BigBang1112 committed Dec 31, 2023
1 parent aaed442 commit 10d3f50
Show file tree
Hide file tree
Showing 7 changed files with 81 additions and 32 deletions.
3 changes: 2 additions & 1 deletion Src/ManiaAPI.NadeoAPI/JsonContexts/NadeoAPIJsonContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace ManiaAPI.NadeoAPI.JsonContexts;
[JsonSerializable(typeof(AuthorizationResponse))]
[JsonSerializable(typeof(ErrorResponse))]
[JsonSerializable(typeof(JwtPayloadNadeoAPI))]
[JsonSerializable(typeof(MapInfoCollection))]
[JsonSerializable(typeof(MapInfoLiveCollection))]
[JsonSerializable(typeof(MapRecord[]))]
[JsonSerializable(typeof(MedalRecordCollection))]
[JsonSerializable(typeof(ManiapubCollection[]))]
Expand All @@ -21,5 +21,6 @@ namespace ManiaAPI.NadeoAPI.JsonContexts;
[JsonSerializable(typeof(Dictionary<string, ApiRoute>))]
[JsonSerializable(typeof(Zone[]))]
[JsonSerializable(typeof(PlayerClubTag[]))]
[JsonSerializable(typeof(MapInfo[]))]
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
sealed partial class NadeoAPIJsonContext : JsonSerializerContext { }
33 changes: 14 additions & 19 deletions Src/ManiaAPI.NadeoAPI/MapInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,20 @@

namespace ManiaAPI.NadeoAPI;

public sealed record MapInfo(string Uid,
public sealed record MapInfo(Guid Author,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 AuthorScore,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 BronzeScore,
string CollectionName,
string FileName,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 GoldScore,
bool IsPlayable,
Guid MapId,
string Name,
Guid Author,
Guid Submitter,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 AuthorTime,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 GoldTime,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 SilverTime,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 BronzeTime,
int NbLaps,
bool Valid,
string DownloadUrl,
string ThumbnailUrl,
[property: JsonConverter(typeof(DateTimeOffsetUnixConverter))] DateTimeOffset UploadTimestamp,
[property: JsonConverter(typeof(DateTimeOffsetUnixConverter))] DateTimeOffset UpdateTimestamp,
int? FileSize,
bool Public,
bool Favorite,
bool Playable,
string MapStyle,
string MapType,
string CollectionName);
string MapUid,
string Name,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 SilverScore,
Guid Submitter,
[property: JsonConverter(typeof(DateTimeOffsetUnixConverter))] DateTimeOffset Timestamp,
string FileUrl,
string ThumbnailUrl);
3 changes: 0 additions & 3 deletions Src/ManiaAPI.NadeoAPI/MapInfoCollection.cs

This file was deleted.

28 changes: 28 additions & 0 deletions Src/ManiaAPI.NadeoAPI/MapInfoLive.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using ManiaAPI.NadeoAPI.Converters;
using System.Text.Json.Serialization;
using TmEssentials;

namespace ManiaAPI.NadeoAPI;

public sealed record MapInfoLive(string Uid,
Guid MapId,
string Name,
Guid Author,
Guid Submitter,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 AuthorTime,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 GoldTime,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 SilverTime,
[property: JsonConverter(typeof(TimeInt32Converter))] TimeInt32 BronzeTime,
int NbLaps,
bool Valid,
string DownloadUrl,
string ThumbnailUrl,
[property: JsonConverter(typeof(DateTimeOffsetUnixConverter))] DateTimeOffset UploadTimestamp,
[property: JsonConverter(typeof(DateTimeOffsetUnixConverter))] DateTimeOffset UpdateTimestamp,
int? FileSize,
bool Public,
bool Favorite,
bool Playable,
string MapStyle,
string MapType,
string CollectionName);
3 changes: 3 additions & 0 deletions Src/ManiaAPI.NadeoAPI/MapInfoLiveCollection.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace ManiaAPI.NadeoAPI;

public sealed record MapInfoLiveCollection(MapInfoLive[] MapList);
17 changes: 8 additions & 9 deletions Src/ManiaAPI.NadeoAPI/NadeoLiveServices.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
using ManiaAPI.NadeoAPI.JsonContexts;
using System.Text.RegularExpressions;

namespace ManiaAPI.NadeoAPI;

public interface INadeoLiveServices : INadeoAPI
{
Task<Maniapub[]> GetActiveManiapubsAsync(CancellationToken cancellationToken = default);
Task<MapInfo> GetMapInfoAsync(string mapUid, CancellationToken cancellationToken = default);
Task<MapInfo[]> GetMapInfosAsync(IEnumerable<string> mapUids, CancellationToken cancellationToken = default);
Task<MapInfo[]> GetMapInfosAsync(params string[] mapUids);
Task<MapInfoLive> GetMapInfoAsync(string mapUid, CancellationToken cancellationToken = default);
Task<MapInfoLive[]> GetMapInfosAsync(IEnumerable<string> mapUids, CancellationToken cancellationToken = default);
Task<MapInfoLive[]> GetMapInfosAsync(params string[] mapUids);
Task<MedalRecordCollection> GetMapMedalRecordsAsync(string mapUid, string groupId, CancellationToken cancellationToken = default);
Task<TopLeaderboardCollection> GetTopLeaderboardAsync(string mapUid, int length = 10, int offset = 0, bool onlyWorld = true, CancellationToken cancellationToken = default);
Task<TopLeaderboardCollection> GetTopLeaderboardAsync(string mapUid, string groupId, int length = 10, int offset = 0, bool onlyWorld = true, CancellationToken cancellationToken = default);
Expand All @@ -31,18 +30,18 @@ public NadeoLiveServices(bool automaticallyAuthorize = true) : this(new HttpClie
{
}

public virtual async Task<MapInfo> GetMapInfoAsync(string mapUid, CancellationToken cancellationToken = default)
public virtual async Task<MapInfoLive> GetMapInfoAsync(string mapUid, CancellationToken cancellationToken = default)
{
return await GetJsonAsync($"token/map/{mapUid}", NadeoAPIJsonContext.Default.MapInfo, cancellationToken);
return await GetJsonAsync($"token/map/{mapUid}", NadeoAPIJsonContext.Default.MapInfoLive, cancellationToken);
}

public virtual async Task<MapInfo[]> GetMapInfosAsync(IEnumerable<string> mapUids, CancellationToken cancellationToken = default)
public virtual async Task<MapInfoLive[]> GetMapInfosAsync(IEnumerable<string> mapUids, CancellationToken cancellationToken = default)
{
return (await GetJsonAsync($"token/map/get-multiple?mapUidList={string.Join(',', mapUids)}",
NadeoAPIJsonContext.Default.MapInfoCollection, cancellationToken)).MapList;
NadeoAPIJsonContext.Default.MapInfoLiveCollection, cancellationToken)).MapList;
}

public async Task<MapInfo[]> GetMapInfosAsync(params string[] mapUids)
public async Task<MapInfoLive[]> GetMapInfosAsync(params string[] mapUids)
{
return await GetMapInfosAsync(mapUids, cancellationToken: default);
}
Expand Down
26 changes: 26 additions & 0 deletions Src/ManiaAPI.NadeoAPI/NadeoServices.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ public interface INadeoServices : INadeoAPI
Task<Zone[]> GetZonesAsync(CancellationToken cancellationToken = default);
Task<PlayerClubTag[]> GetPlayerClubTagsAsync(IEnumerable<Guid> accountIds, CancellationToken cancellationToken = default);
Task<PlayerClubTag[]> GetPlayerClubTagsAsync(params Guid[] accountIds);
Task<MapInfo> GetMapInfoAsync(Guid mapId, CancellationToken cancellationToken = default);
Task<MapInfo[]> GetMapInfosAsync(IEnumerable<Guid> mapIds, CancellationToken cancellationToken = default);
Task<MapInfo> GetMapInfoAsync(string mapUid, CancellationToken cancellationToken = default);
Task<MapInfo[]> GetMapInfosAsync(IEnumerable<string> mapUids, CancellationToken cancellationToken = default);
}

public class NadeoServices : NadeoAPI, INadeoServices
Expand Down Expand Up @@ -81,4 +85,26 @@ public async Task<PlayerClubTag[]> GetPlayerClubTagsAsync(params Guid[] accountI
{
return await GetPlayerClubTagsAsync(accountIds, CancellationToken.None);
}

public virtual async Task<MapInfo> GetMapInfoAsync(Guid mapId, CancellationToken cancellationToken = default)
{
return await GetJsonAsync($"maps/?mapIdList={mapId}", NadeoAPIJsonContext.Default.MapInfo, cancellationToken);
}

public virtual async Task<MapInfo[]> GetMapInfosAsync(IEnumerable<Guid> mapIds, CancellationToken cancellationToken = default)
{
return await GetJsonAsync($"maps/?mapIdList={string.Join(',', mapIds)}",
NadeoAPIJsonContext.Default.MapInfoArray, cancellationToken);
}

public virtual async Task<MapInfo> GetMapInfoAsync(string mapUid, CancellationToken cancellationToken = default)
{
return await GetJsonAsync($"maps/?mapUidList={mapUid}", NadeoAPIJsonContext.Default.MapInfo, cancellationToken);
}

public virtual async Task<MapInfo[]> GetMapInfosAsync(IEnumerable<string> mapUids, CancellationToken cancellationToken = default)
{
return await GetJsonAsync($"maps/?mapUidList={string.Join(',', mapUids)}",
NadeoAPIJsonContext.Default.MapInfoArray, cancellationToken);
}
}

0 comments on commit 10d3f50

Please sign in to comment.