Skip to content

Commit

Permalink
Add Get Unban Requests endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
occluder committed Apr 21, 2024
1 parent d713138 commit 0375a0c
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 1 deletion.
17 changes: 17 additions & 0 deletions MiniTwitch.Helix/Enums/UnbanRequestStatus.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MiniTwitch.Helix.Enums;

public enum UnbanRequestStatus
{
Unknown,
Pending,
Approved,
Denied,
Acknowledged,
Canceled,
}
8 changes: 8 additions & 0 deletions MiniTwitch.Helix/HelixWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -959,4 +959,12 @@ public Task<HelixResult<UserEmotes>> GetUserEmotes(
long? broadcasterId = null,
CancellationToken cancellationToken = default)
=> _all.GetUserEmotes(broadcasterId, cancellationToken);

public Task<HelixResult<UnbanRequests>> GetUnbanRequests(
long broadcasterId,
UnbanRequestStatus status,
long? userId,
int? first,
CancellationToken cancellationToken = default)
=> _all.GetUnbanRequests(broadcasterId, status, userId, first, cancellationToken);
}
14 changes: 14 additions & 0 deletions MiniTwitch.Helix/Internal/Models/Endpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2027,4 +2027,18 @@ internal static class Endpoints
_ => "Unknown response code"
}
};

public static readonly HelixEndpoint GetUnbanRequests = new()
{
Method = HttpMethod.Get,
Route = "/moderation/unban_requests",
SuccessStatusCode = HttpStatusCode.OK,
GetResponseMessage = code => code switch
{
HttpStatusCode.OK => "Successfully retrieved the list of unban requests.",
HttpStatusCode.BadRequest => "The broadcaster_id query parameter is required.\r\nThe ID in the broadcaster_id query parameter is not valid.\r\nThe moderator_id query parameter is required.\r\nThe ID in the moderator_id query parameter is not valid.\r\nThe pagination cursor is not valid.",
HttpStatusCode.Unauthorized => "The ID in moderator_id must match the user ID in the user access token.\r\nThe Authorization header is required and must contain a user access token.\r\nThe user access token must include the moderator:read:unban_requests or moderator:manage:unban_requests scope.\r\nThe access token is not valid.\r\nThe client ID specified in the Client-Id header does not match the client ID specified in the access token.",
_ => "Unknown response code"
}
};
}
19 changes: 19 additions & 0 deletions MiniTwitch.Helix/Models/AllCategories.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2153,4 +2153,23 @@ public Task<HelixResult<UserEmotes>> GetUserEmotes(

return HelixResultFactory.Create<UserEmotes>(this.ApiClient, request, endpoint, cancellationToken);
}


public Task<HelixResult<UnbanRequests>> GetUnbanRequests(
long broadcasterId,
UnbanRequestStatus status,
long? userId,
int? first,
CancellationToken cancellationToken = default)
{
HelixEndpoint endpoint = Endpoints.GetUnbanRequests;
RequestData request = new RequestData(_baseUrl, endpoint)
.AddParam(QueryParams.BroadcasterId, broadcasterId)
.AddParam(QueryParams.ModeratorId, this.UserId)
.AddParam(QueryParams.Status, status)
.AddParam(QueryParams.UserId, userId)
.AddParam(QueryParams.First, first);

return HelixResultFactory.Create<UnbanRequests>(this.ApiClient, request, endpoint, cancellationToken);
}
}
11 changes: 10 additions & 1 deletion MiniTwitch.Helix/Models/ModerationCategory.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using MiniTwitch.Helix.Requests;
using MiniTwitch.Helix.Enums;
using MiniTwitch.Helix.Requests;
using MiniTwitch.Helix.Responses;

namespace MiniTwitch.Helix.Models;
Expand Down Expand Up @@ -119,4 +120,12 @@ public Task<HelixResult<ModeratedChannels>> GetModeratedChannels(
int? first = null,
CancellationToken cancellationToken = default)
=> _all.GetModeratedChannels(first, cancellationToken);

public Task<HelixResult<UnbanRequests>> GetUnbanRequests(
long broadcasterId,
UnbanRequestStatus status,
long? userId,
int? first,
CancellationToken cancellationToken = default)
=> _all.GetUnbanRequests(broadcasterId, status, userId, first, cancellationToken);
}
33 changes: 33 additions & 0 deletions MiniTwitch.Helix/Responses/UnbanRequests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using System.Text.Json.Serialization;
using MiniTwitch.Helix.Enums;
using MiniTwitch.Helix.Internal.Json;
using MiniTwitch.Helix.Models;

namespace MiniTwitch.Helix.Responses;
public class UnbanRequests : PaginableResponse<UnbanRequests.Request>
{
public record Request(
string Id,
long BroadcasterId,
[property: JsonPropertyName("broadcaster_login")]
string BroadcasterName,
[property: JsonPropertyName("broadcaster_name")]
string BroadcasterDisplayName,
long ModeratorId,
[property: JsonPropertyName("moderator_login")]
string ModeratorName,
[property: JsonPropertyName("moderator_name")]
string ModeratorDisplayName,
long UserId,
[property: JsonPropertyName("user_login")]
string UserName,
[property: JsonPropertyName("user_name")]
string UserDisplayName,
string Text,
[property: JsonConverter(typeof(EnumConverter<UnbanRequestStatus>))]
UnbanRequestStatus Status,
DateTime CreatedAt,
DateTime? ResolvedAt,
string? ResolutionText
);
}

0 comments on commit 0375a0c

Please sign in to comment.