Skip to content

Commit

Permalink
Add EditClubActivityAsync
Browse files Browse the repository at this point in the history
  • Loading branch information
BigBang1112 committed Jun 19, 2024
1 parent 1bd49ec commit 0377549
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 2 deletions.
18 changes: 18 additions & 0 deletions Src/ManiaAPI.NadeoAPI/ClubActivityEdition.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using ManiaAPI.NadeoAPI.Converters;
using System.Text.Json.Serialization;

namespace ManiaAPI.NadeoAPI;

public sealed record ClubActivityEdition
{
[JsonConverter(typeof(BoolNumberConverter))]
public bool Featured { get; init; }

[JsonConverter(typeof(BoolNumberConverter))]
public bool Public { get; init; }

[JsonConverter(typeof(BoolNumberConverter))]
public bool Active { get; init; }

public int Position { get; init; }
}
19 changes: 19 additions & 0 deletions Src/ManiaAPI.NadeoAPI/Converters/BoolNumberConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System.Text.Json;
using System.Text.Json.Serialization;

namespace ManiaAPI.NadeoAPI.Converters;

internal sealed class BoolNumberConverter : JsonConverter<bool>
{
public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var number = reader.GetInt32();

return number == 1;
}

public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
{
writer.WriteNumberValue(value ? 1 : 0);
}
}
3 changes: 2 additions & 1 deletion Src/ManiaAPI.NadeoAPI/JsonContexts/NadeoAPIJsonContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@ namespace ManiaAPI.NadeoAPI.JsonContexts;
[JsonSerializable(typeof(ClubRoomCollection))]
[JsonSerializable(typeof(ClubBucketCollection))]
[JsonSerializable(typeof(ClubPlayerInfo))]
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
[JsonSerializable(typeof(ClubActivityEdition))]
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
internal sealed partial class NadeoAPIJsonContext : JsonSerializerContext { }
15 changes: 14 additions & 1 deletion Src/ManiaAPI.NadeoAPI/NadeoLiveServices.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,12 @@ public interface INadeoLiveServices : INadeoAPI
Task<ClubRoom> GetClubRoomAsync(int clubId, int roomId, CancellationToken cancellationToken = default);
Task<ClubRoomCollection> GetClubRoomsAsync(int length, int offset = 0, string? name = null, CancellationToken cancellationToken = default);
Task<ClubBucketCollection> GetClubBucketsAsync(ClubBucketType type, int length, int offset = 0, CancellationToken cancellationToken = default);
Task<ClubBucketCollection> GetClubBucketsAsync(string type, int length, int offset = 0, CancellationToken cancellationToken = default);
Task<ClubBucket> GetClubBucketAsync(int clubId, int bucketId, int length = 1, int offset = 0, CancellationToken cancellationToken = default);
Task<ClubCollection> GetClubsAsync(int length, int offset = 0, string? name = null, CancellationToken cancellationToken = default);
Task<ClubPlayerInfo> GetClubPlayerInfoAsync(CancellationToken cancellationToken = default);
Task<ClubCollection> GetMyClubsAsync(int length, int offset = 0, CancellationToken cancellationToken = default);
Task EditClubActivityAsync(int clubId, int activityId, ClubActivityEdition edition, CancellationToken cancellationToken = default);

/// <summary>
/// Requests the daily channel join link. It can vary based on server occupancy.
Expand Down Expand Up @@ -206,7 +208,12 @@ public virtual async Task<ClubBucketCollection> GetClubBucketsAsync(ClubBucketTy
_ => throw new ArgumentOutOfRangeException(nameof(type))
};

return await GetJsonAsync($"token/club/bucket/{typeStr}/all?length={length}&offset={offset}",
return await GetClubBucketsAsync(typeStr, length, offset, cancellationToken);
}

public virtual async Task<ClubBucketCollection> GetClubBucketsAsync(string type, int length, int offset = 0, CancellationToken cancellationToken = default)
{
return await GetJsonAsync($"token/club/bucket/{type}/all?length={length}&offset={offset}",
NadeoAPIJsonContext.Default.ClubBucketCollection, cancellationToken);
}

Expand All @@ -232,4 +239,10 @@ public virtual async Task<ClubCollection> GetMyClubsAsync(int length, int offset
return await GetJsonAsync($"token/club/mine?length={length}&offset={offset}",
NadeoAPIJsonContext.Default.ClubCollection, cancellationToken);
}

public virtual async Task EditClubActivityAsync(int clubId, int activityId, ClubActivityEdition edition, CancellationToken cancellationToken = default)
{
var jsonContent = JsonContent.Create(edition, NadeoAPIJsonContext.Default.ClubActivityEdition);
await SendAsync(HttpMethod.Post, $"token/club/{clubId}/activity/{activityId}/edit", jsonContent, cancellationToken);
}
}

0 comments on commit 0377549

Please sign in to comment.