add /api/player/disconnect endpoint
This commit is contained in:
parent
64bbf0598e
commit
482a64ac54
@ -4,6 +4,8 @@ using TomatenMusic;
|
|||||||
using TomatenMusic_Api;
|
using TomatenMusic_Api;
|
||||||
using TomatenMusic_Api.Auth.Helpers;
|
using TomatenMusic_Api.Auth.Helpers;
|
||||||
using TomatenMusic_Api.Models;
|
using TomatenMusic_Api.Models;
|
||||||
|
using TomatenMusic_Api.Models.EventArgs;
|
||||||
|
using static TomatenMusic_Api.InProcessEventBus;
|
||||||
|
|
||||||
namespace TomatenMusic_Api.Controllers;
|
namespace TomatenMusic_Api.Controllers;
|
||||||
|
|
||||||
@ -54,8 +56,9 @@ public class PlayerController : ControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("connect")]
|
[HttpPost("connect")]
|
||||||
public async Task<IActionResult> PostConnection(ChannelConnectRequest request)
|
public async Task<IActionResult> PostConnect(ChannelConnectRequest request)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _tomatenMusicDataService.GetGuildAsync(request.Guild_Id);
|
await _tomatenMusicDataService.GetGuildAsync(request.Guild_Id);
|
||||||
@ -85,8 +88,28 @@ public class PlayerController : ControllerBase
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
_eventBus.OnConnectRequestEvent(new InProcessEventBus.ChannelConnectEventArgs(request.Guild_Id, channel));
|
_eventBus.OnConnectRequestEvent(new ChannelConnectArgs(request.Guild_Id, channel));
|
||||||
|
|
||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost("disconnect")]
|
||||||
|
public async Task<IActionResult> PostDisconnect(ChannelDisconnectRequest request)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await _tomatenMusicDataService.GetGuildAsync(request.GuildId);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return NotFound("That Guild was not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!await _tomatenMusicDataService.IsConnectedAsync(request.GuildId) == true)
|
||||||
|
return BadRequest("The Bot is not connected.");
|
||||||
|
|
||||||
|
_eventBus.OnDisconnectRequestEvent(new ChannelDisconnectArgs(request.GuildId));
|
||||||
|
return Ok();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
7
TomatenMusic/Models/ChannelDisconnectRequest.cs
Normal file
7
TomatenMusic/Models/ChannelDisconnectRequest.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
namespace TomatenMusic_Api.Models.EventArgs
|
||||||
|
{
|
||||||
|
public class ChannelDisconnectRequest
|
||||||
|
{
|
||||||
|
public ulong GuildId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
18
TomatenMusic/Models/EventArgs/ChannelConnectArgs.cs
Normal file
18
TomatenMusic/Models/EventArgs/ChannelConnectArgs.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using DSharpPlus.Entities;
|
||||||
|
using Emzi0767.Utilities;
|
||||||
|
|
||||||
|
namespace TomatenMusic_Api.Models.EventArgs
|
||||||
|
{
|
||||||
|
public class ChannelConnectArgs : AsyncEventArgs
|
||||||
|
{
|
||||||
|
public ulong Guild_Id { get; set; }
|
||||||
|
|
||||||
|
public DiscordChannel Channel { get; set; }
|
||||||
|
|
||||||
|
public ChannelConnectArgs(ulong guild_Id, DiscordChannel channel)
|
||||||
|
{
|
||||||
|
Guild_Id = guild_Id;
|
||||||
|
Channel = channel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
TomatenMusic/Models/EventArgs/ChannelDisconnectArgs.cs
Normal file
13
TomatenMusic/Models/EventArgs/ChannelDisconnectArgs.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using Emzi0767.Utilities;
|
||||||
|
|
||||||
|
namespace TomatenMusic_Api.Models.EventArgs
|
||||||
|
{
|
||||||
|
public class ChannelDisconnectArgs : AsyncEventArgs
|
||||||
|
{
|
||||||
|
public ulong GuildId { get; set; }
|
||||||
|
|
||||||
|
public ChannelDisconnectArgs(ulong guildId) { GuildId = guildId; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -2,29 +2,25 @@
|
|||||||
using Emzi0767.Utilities;
|
using Emzi0767.Utilities;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using TomatenMusic_Api.Models;
|
using TomatenMusic_Api.Models;
|
||||||
|
using TomatenMusic_Api.Models.EventArgs;
|
||||||
|
|
||||||
namespace TomatenMusic_Api;
|
namespace TomatenMusic_Api;
|
||||||
|
|
||||||
public class InProcessEventBus
|
public class InProcessEventBus
|
||||||
{
|
{
|
||||||
public event AsyncEventHandler<InProcessEventBus, ChannelConnectEventArgs>? OnConnectRequest;
|
public event AsyncEventHandler<InProcessEventBus, ChannelConnectArgs>? OnConnectRequest;
|
||||||
|
|
||||||
public void OnConnectRequestEvent(ChannelConnectEventArgs e)
|
public event AsyncEventHandler<InProcessEventBus, ChannelDisconnectArgs>? OnDisconnectRequest;
|
||||||
|
|
||||||
|
|
||||||
|
public void OnConnectRequestEvent(ChannelConnectArgs e)
|
||||||
{
|
{
|
||||||
_ = OnConnectRequest?.Invoke(this, e);
|
_ = OnConnectRequest?.Invoke(this, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ChannelConnectEventArgs : AsyncEventArgs
|
public void OnDisconnectRequestEvent(ChannelDisconnectArgs e)
|
||||||
{
|
{
|
||||||
public ulong Guild_Id { get; set; }
|
_ = OnDisconnectRequest?.Invoke(this, e);
|
||||||
|
|
||||||
public DiscordChannel Channel { get; set; }
|
|
||||||
|
|
||||||
public ChannelConnectEventArgs(ulong guild_Id, DiscordChannel channel)
|
|
||||||
{
|
|
||||||
Guild_Id = guild_Id;
|
|
||||||
Channel = channel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using TomatenMusic;
|
using TomatenMusic;
|
||||||
using TomatenMusic.Music;
|
using TomatenMusic.Music;
|
||||||
using TomatenMusic_Api.Models;
|
using TomatenMusic_Api.Models;
|
||||||
|
using TomatenMusic_Api.Models.EventArgs;
|
||||||
using static TomatenMusic_Api.InProcessEventBus;
|
using static TomatenMusic_Api.InProcessEventBus;
|
||||||
|
|
||||||
namespace TomatenMusic_Api
|
namespace TomatenMusic_Api
|
||||||
@ -24,11 +25,17 @@ namespace TomatenMusic_Api
|
|||||||
private void Initialize()
|
private void Initialize()
|
||||||
{
|
{
|
||||||
_inProcessEventBus.OnConnectRequest += _inProcessEventBus_OnConnectRequest;
|
_inProcessEventBus.OnConnectRequest += _inProcessEventBus_OnConnectRequest;
|
||||||
|
_inProcessEventBus.OnDisconnectRequest += _inProcessEventBus_OnDisconnectRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task _inProcessEventBus_OnConnectRequest(InProcessEventBus sender, ChannelConnectEventArgs e)
|
private async Task _inProcessEventBus_OnDisconnectRequest(InProcessEventBus sender, ChannelDisconnectArgs e)
|
||||||
|
{
|
||||||
|
GuildPlayer player = _audioService.GetPlayer<GuildPlayer>(e.GuildId);
|
||||||
|
player.DisconnectAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task _inProcessEventBus_OnConnectRequest(InProcessEventBus sender, ChannelConnectArgs e)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Channel Connected!");
|
|
||||||
GuildPlayer player = await _audioService.JoinAsync<GuildPlayer>(e.Guild_Id, e.Channel.Id, true);
|
GuildPlayer player = await _audioService.JoinAsync<GuildPlayer>(e.Guild_Id, e.Channel.Id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"TOKEN": "Bot_Token",
|
"TOKEN": "ODQwNjQ5NjU1MTAwMjQzOTY4.YJbSAA.iERGRAMeXJEBb5vq3eNUmrKsT50",
|
||||||
"LavaLinkPassword": " ",
|
"LavaLinkPassword": "SGWaldsolms9",
|
||||||
"SpotifyClientId": " ",
|
"SpotifyClientId": "14b77fa47f2f492db58cbdca8f1e5d9c",
|
||||||
"SpotifyClientSecret": " ",
|
"SpotifyClientSecret": "c247625f0cfe4b72a1faa01b7c5b8eea",
|
||||||
"YoutubeApiKey": " "
|
"YoutubeApiKey": "AIzaSyBIcTl9JQ9jF412mX0Wfp_3Y-4a-V0SASQ"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,9 +39,6 @@ namespace TomatenMusic.Music
|
|||||||
_spotify = serviceProvider.GetRequiredService<ISpotifyService>();
|
_spotify = serviceProvider.GetRequiredService<ISpotifyService>();
|
||||||
_audioService = serviceProvider.GetRequiredService<IAudioService>();
|
_audioService = serviceProvider.GetRequiredService<IAudioService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public async override Task PlayAsync(LavalinkTrack track, TimeSpan? startTime = null, TimeSpan? endTime = null, bool noReplace = true)
|
public async override Task PlayAsync(LavalinkTrack track, TimeSpan? startTime = null, TimeSpan? endTime = null, bool noReplace = true)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -99,7 +99,8 @@ namespace TomatenMusic
|
|||||||
.AddSingleton<YoutubeService>()
|
.AddSingleton<YoutubeService>()
|
||||||
.AddSingleton<LyricsOptions>()
|
.AddSingleton<LyricsOptions>()
|
||||||
.AddSingleton<LyricsService>()
|
.AddSingleton<LyricsService>()
|
||||||
.AddSingleton(SpotifyClientConfig.CreateDefault().WithAuthenticator(new ClientCredentialsAuthenticator(config.SpotifyClientId, config.SpotifyClientSecret))))
|
.AddSingleton(
|
||||||
|
SpotifyClientConfig.CreateDefault().WithAuthenticator(new ClientCredentialsAuthenticator(config.SpotifyClientId, config.SpotifyClientSecret))))
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
ServiceProvider = _host.Services;
|
ServiceProvider = _host.Services;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user