Added Nightbot integration. Changed from client credentials flow to implicit code grant flow.

This commit is contained in:
Tom
2024-08-11 21:22:37 +00:00
parent 13bb6a9aa8
commit 0ad063cebd
9 changed files with 260 additions and 23 deletions

View File

@ -0,0 +1,60 @@
using System.Text.Json;
using TwitchChatTTS.Helpers;
using Serilog;
using TwitchChatTTS;
public class NightbotApiClient
{
private readonly ILogger _logger;
private readonly WebClientWrap _web;
public NightbotApiClient(
ILogger logger
)
{
_logger = logger;
_web = new WebClientWrap(new JsonSerializerOptions()
{
PropertyNameCaseInsensitive = false,
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower
});
}
public async Task Play()
{
await _web.Post("https://api.nightbot.tv/1/song_requests/queue/play");
}
public async Task Pause()
{
await _web.Post("https://api.nightbot.tv/1/song_requests/queue/pause");
}
public async Task Skip()
{
await _web.Post("https://api.nightbot.tv/1/song_requests/queue/skip");
}
public async Task Volume(int volume)
{
await _web.Put("https://api.nightbot.tv/1/song_requests", new Dictionary<string, object>() { { "volume", volume } });
}
public async Task ClearPlaylist()
{
await _web.Delete("https://api.nightbot.tv/1/song_requests/playlist");
}
public async Task ClearQueue()
{
await _web.Delete("https://api.nightbot.tv/1/song_requests/queue");
}
public void Initialize(string clientId, string accessToken)
{
_web.AddHeader("Authorization", "Bearer " + accessToken);
_web.AddHeader("Client-Id", clientId);
}
}