diff --git a/src/Lavalink4NET.Integrations.Lavasearch/Extensions/TrackManagerExtensions.cs b/src/Lavalink4NET.Integrations.Lavasearch/Extensions/TrackManagerExtensions.cs index 049d756d..db487c8f 100644 --- a/src/Lavalink4NET.Integrations.Lavasearch/Extensions/TrackManagerExtensions.cs +++ b/src/Lavalink4NET.Integrations.Lavasearch/Extensions/TrackManagerExtensions.cs @@ -2,7 +2,7 @@ using System.Collections.Immutable; using System.Threading.Tasks; -using Lavalink4NET.Protocol.Models; +using Lavalink4NET.Protocol.Responses; using Lavalink4NET.Rest; using Lavalink4NET.Rest.Entities.Tracks; using Lavalink4NET.Tracks; @@ -33,10 +33,14 @@ public static class TrackManagerExtensions return null; } - static PlaylistInformation CreatePlaylist(PlaylistInformationModel playlistInformationModel) + static PlaylistInformation CreatePlaylist(PlaylistLoadResultData data) { - var playlistName = playlistInformationModel.Name; - return new PlaylistInformation(playlistName, null); + var playlistName = data.PlaylistInformation.Name; + + return new PlaylistInformation( + Name: playlistName, + SelectedTrack: null, + AdditionalInformation: data.AdditionalInformation); } var tracks = searchResult.Tracks is null @@ -57,8 +61,14 @@ static PlaylistInformation CreatePlaylist(PlaylistInformationModel playlistInfor var texts = searchResult.Texts is null ? ImmutableArray.Empty - : searchResult.Texts.Value.Select(x => new TextResult(x.Text)).ToImmutableArray(); + : searchResult.Texts.Value.Select(x => new TextResult(x.Text, x.AdditionalInformation)).ToImmutableArray(); - return new SearchResult(tracks, albums, artists, playlists, texts); + return new SearchResult( + Tracks: tracks, + Albums: albums, + Artists: artists, + Playlists: playlists, + Texts: texts, + AdditionalInformation: searchResult.AdditionalInformation); } } diff --git a/src/Lavalink4NET.Integrations.Lavasearch/Models/SearchResultModel.cs b/src/Lavalink4NET.Integrations.Lavasearch/Models/SearchResultModel.cs index 12d3d3fb..590602ae 100644 --- a/src/Lavalink4NET.Integrations.Lavasearch/Models/SearchResultModel.cs +++ b/src/Lavalink4NET.Integrations.Lavasearch/Models/SearchResultModel.cs @@ -4,6 +4,7 @@ using System.Text.Json.Nodes; using System.Text.Json.Serialization; using Lavalink4NET.Protocol.Models; +using Lavalink4NET.Protocol.Responses; public sealed record class SearchResultModel { @@ -13,15 +14,15 @@ public sealed record class SearchResultModel [JsonPropertyName("albums")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public ImmutableArray? Albums { get; set; } + public ImmutableArray? Albums { get; set; } [JsonPropertyName("artists")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public ImmutableArray? Artists { get; set; } + public ImmutableArray? Artists { get; set; } [JsonPropertyName("playlists")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public ImmutableArray? Playlists { get; set; } + public ImmutableArray? Playlists { get; set; } [JsonPropertyName("texts")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] @@ -29,5 +30,5 @@ public sealed record class SearchResultModel [JsonRequired] [JsonPropertyName("plugin")] - public IDictionary AdditionalData { get; set; } = null!; + public IImmutableDictionary AdditionalInformation { get; set; } = null!; } diff --git a/src/Lavalink4NET.Integrations.Lavasearch/Models/TextResultModel.cs b/src/Lavalink4NET.Integrations.Lavasearch/Models/TextResultModel.cs index 22472089..d6d67dfd 100644 --- a/src/Lavalink4NET.Integrations.Lavasearch/Models/TextResultModel.cs +++ b/src/Lavalink4NET.Integrations.Lavasearch/Models/TextResultModel.cs @@ -1,5 +1,6 @@ namespace Lavalink4NET.Integrations.Lavasearch.Models; +using System.Collections.Immutable; using System.Text.Json.Nodes; using System.Text.Json.Serialization; @@ -11,5 +12,5 @@ public sealed record class TextResultModel [JsonRequired] [JsonPropertyName("plugin")] - public IDictionary AdditionalData { get; set; } = null!; + public IImmutableDictionary AdditionalInformation { get; set; } = null!; } diff --git a/src/Lavalink4NET.Integrations.Lavasearch/SearchResult.cs b/src/Lavalink4NET.Integrations.Lavasearch/SearchResult.cs index eb5cf13f..727072bc 100644 --- a/src/Lavalink4NET.Integrations.Lavasearch/SearchResult.cs +++ b/src/Lavalink4NET.Integrations.Lavasearch/SearchResult.cs @@ -1,6 +1,7 @@ namespace Lavalink4NET.Integrations.Lavasearch; using System.Collections.Immutable; +using System.Text.Json.Nodes; using Lavalink4NET.Rest.Entities.Tracks; using Lavalink4NET.Tracks; @@ -9,4 +10,5 @@ public sealed record class SearchResult( ImmutableArray Albums, ImmutableArray Artists, ImmutableArray Playlists, - ImmutableArray Texts); \ No newline at end of file + ImmutableArray Texts, + IImmutableDictionary AdditionalInformation); \ No newline at end of file diff --git a/src/Lavalink4NET.Integrations.Lavasearch/TextResult.cs b/src/Lavalink4NET.Integrations.Lavasearch/TextResult.cs index be468449..5a1bbd1b 100644 --- a/src/Lavalink4NET.Integrations.Lavasearch/TextResult.cs +++ b/src/Lavalink4NET.Integrations.Lavasearch/TextResult.cs @@ -1,3 +1,8 @@ namespace Lavalink4NET.Integrations.Lavasearch; -public readonly record struct TextResult(string Text); \ No newline at end of file +using System.Collections.Immutable; +using System.Text.Json.Nodes; + +public readonly record struct TextResult( + string Text, + IImmutableDictionary AdditionalInformation); \ No newline at end of file diff --git a/src/Lavalink4NET.Protocol/Models/PlaylistInformationModel.cs b/src/Lavalink4NET.Protocol/Models/PlaylistInformationModel.cs index 3e021b41..b87020d2 100644 --- a/src/Lavalink4NET.Protocol/Models/PlaylistInformationModel.cs +++ b/src/Lavalink4NET.Protocol/Models/PlaylistInformationModel.cs @@ -1,5 +1,4 @@ namespace Lavalink4NET.Protocol.Models; - using System.Text.Json.Serialization; using Lavalink4NET.Protocol.Converters; diff --git a/src/Lavalink4NET.Protocol/Models/Tracks/PlaylistLoadResultData.cs b/src/Lavalink4NET.Protocol/Models/Tracks/PlaylistLoadResultData.cs index 50a02183..26a64426 100644 --- a/src/Lavalink4NET.Protocol/Models/Tracks/PlaylistLoadResultData.cs +++ b/src/Lavalink4NET.Protocol/Models/Tracks/PlaylistLoadResultData.cs @@ -1,6 +1,7 @@ namespace Lavalink4NET.Protocol.Responses; using System.Collections.Immutable; +using System.Text.Json.Nodes; using System.Text.Json.Serialization; using Lavalink4NET.Protocol.Models; @@ -9,9 +10,9 @@ public sealed record class PlaylistLoadResultData( [property: JsonPropertyName("info")] PlaylistInformationModel PlaylistInformation, + [property: JsonRequired] [property: JsonPropertyName("pluginInfo")] - [property: JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - IImmutableDictionary? PluginInformation, + IImmutableDictionary AdditionalInformation, [property: JsonRequired] [property: JsonPropertyName("tracks")] diff --git a/src/Lavalink4NET.Rest/Entities/Tracks/PlaylistInformation.cs b/src/Lavalink4NET.Rest/Entities/Tracks/PlaylistInformation.cs index 49f8ab9c..da23e188 100644 --- a/src/Lavalink4NET.Rest/Entities/Tracks/PlaylistInformation.cs +++ b/src/Lavalink4NET.Rest/Entities/Tracks/PlaylistInformation.cs @@ -1,5 +1,10 @@ namespace Lavalink4NET.Rest.Entities.Tracks; +using System.Collections.Immutable; +using System.Text.Json.Nodes; using Lavalink4NET.Tracks; -public readonly record struct PlaylistInformation(string Name, LavalinkTrack? SelectedTrack); \ No newline at end of file +public readonly record struct PlaylistInformation( + string Name, + LavalinkTrack? SelectedTrack, + IImmutableDictionary AdditionalInformation); \ No newline at end of file diff --git a/src/Lavalink4NET.Rest/LavalinkApiClient.cs b/src/Lavalink4NET.Rest/LavalinkApiClient.cs index 0b45b99b..1e02dc1a 100644 --- a/src/Lavalink4NET.Rest/LavalinkApiClient.cs +++ b/src/Lavalink4NET.Rest/LavalinkApiClient.cs @@ -211,7 +211,8 @@ internal static (PlaylistInformation Playlist, ImmutableArray Tra var playlistInformation = new PlaylistInformation( Name: loadResult.PlaylistInformation.Name, - SelectedTrack: selectedTrack); + SelectedTrack: selectedTrack, + AdditionalInformation: loadResult.AdditionalInformation); return (playlistInformation, tracks); }