diff --git a/Discord.Net.sln b/Discord.Net.sln index 230795a3a..f697cac83 100644 --- a/Discord.Net.sln +++ b/Discord.Net.sln @@ -3,19 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{72164C41-C6CD-4722-B07B-64A5B6DDC977}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Core", "src\Discord.Net.Core\Discord.Net.Core.csproj", "{3851F6F6-C028-4CC6-9981-5845EB53CDC5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Rest", "src\Discord.Net.Rest\Discord.Net.Rest.csproj", "{13E04C0A-65FD-4648-8B9C-87AAE7A76087}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{424AA4CA-E283-4B83-B288-B0181516D1F9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Gateway", "src\Discord.Net.Gateway\Discord.Net.Gateway.csproj", "{AAAAEEC8-7E76-4D74-B610-960291FD7580}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Tests.Unit", "test\Discord.Tests.Unit\Discord.Tests.Unit.csproj", "{97B3208E-FBB3-43D8-8944-EE06F6FE4032}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{424AA4CA-E283-4B83-B288-B0181516D1F9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Tests.Integration", "test\Discord.Tests.Integration\Discord.Tests.Integration.csproj", "{D2A17BA6-C6A5-42DB-A4BC-F97C07904BA2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Tests.Unit", "test\Discord.Tests.Unit\Discord.Tests.Unit.csproj", "{97B3208E-FBB3-43D8-8944-EE06F6FE4032}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{279F3738-D35E-402B-BC99-CBE44821C468}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Tests.Integration", "test\Discord.Tests.Integration\Discord.Tests.Integration.csproj", "{D2A17BA6-C6A5-42DB-A4BC-F97C07904BA2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net", "src\Discord.Net\Discord.Net.csproj", "{65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -26,46 +22,7 @@ Global Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Debug|x64.ActiveCfg = Debug|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Debug|x64.Build.0 = Debug|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Debug|x86.ActiveCfg = Debug|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Debug|x86.Build.0 = Debug|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Release|Any CPU.Build.0 = Release|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Release|x64.ActiveCfg = Release|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Release|x64.Build.0 = Release|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Release|x86.ActiveCfg = Release|Any CPU - {3851F6F6-C028-4CC6-9981-5845EB53CDC5}.Release|x86.Build.0 = Release|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Debug|Any CPU.Build.0 = Debug|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Debug|x64.ActiveCfg = Debug|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Debug|x64.Build.0 = Debug|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Debug|x86.ActiveCfg = Debug|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Debug|x86.Build.0 = Debug|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Release|Any CPU.ActiveCfg = Release|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Release|Any CPU.Build.0 = Release|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Release|x64.ActiveCfg = Release|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Release|x64.Build.0 = Release|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Release|x86.ActiveCfg = Release|Any CPU - {13E04C0A-65FD-4648-8B9C-87AAE7A76087}.Release|x86.Build.0 = Release|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Debug|x64.ActiveCfg = Debug|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Debug|x64.Build.0 = Debug|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Debug|x86.ActiveCfg = Debug|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Debug|x86.Build.0 = Debug|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Release|Any CPU.Build.0 = Release|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Release|x64.ActiveCfg = Release|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Release|x64.Build.0 = Release|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Release|x86.ActiveCfg = Release|Any CPU - {AAAAEEC8-7E76-4D74-B610-960291FD7580}.Release|x86.Build.0 = Release|Any CPU {97B3208E-FBB3-43D8-8944-EE06F6FE4032}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {97B3208E-FBB3-43D8-8944-EE06F6FE4032}.Debug|Any CPU.Build.0 = Debug|Any CPU {97B3208E-FBB3-43D8-8944-EE06F6FE4032}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -90,12 +47,28 @@ Global {D2A17BA6-C6A5-42DB-A4BC-F97C07904BA2}.Release|x64.Build.0 = Release|Any CPU {D2A17BA6-C6A5-42DB-A4BC-F97C07904BA2}.Release|x86.ActiveCfg = Release|Any CPU {D2A17BA6-C6A5-42DB-A4BC-F97C07904BA2}.Release|x86.Build.0 = Release|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Debug|x64.ActiveCfg = Debug|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Debug|x64.Build.0 = Debug|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Debug|x86.ActiveCfg = Debug|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Debug|x86.Build.0 = Debug|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Release|Any CPU.Build.0 = Release|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Release|x64.ActiveCfg = Release|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Release|x64.Build.0 = Release|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Release|x86.ActiveCfg = Release|Any CPU + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {3851F6F6-C028-4CC6-9981-5845EB53CDC5} = {72164C41-C6CD-4722-B07B-64A5B6DDC977} - {13E04C0A-65FD-4648-8B9C-87AAE7A76087} = {72164C41-C6CD-4722-B07B-64A5B6DDC977} - {AAAAEEC8-7E76-4D74-B610-960291FD7580} = {72164C41-C6CD-4722-B07B-64A5B6DDC977} {97B3208E-FBB3-43D8-8944-EE06F6FE4032} = {424AA4CA-E283-4B83-B288-B0181516D1F9} {D2A17BA6-C6A5-42DB-A4BC-F97C07904BA2} = {424AA4CA-E283-4B83-B288-B0181516D1F9} + {65F1C45D-6D82-4E24-9F56-2840D2E6EFB9} = {279F3738-D35E-402B-BC99-CBE44821C468} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1F07E0CE-26FE-4660-A0C3-4F9CC2BD7B72} EndGlobalSection EndGlobal diff --git a/nuget.config b/nuget.config index 422a0e18a..08801b795 100644 --- a/nuget.config +++ b/nuget.config @@ -1,8 +1,9 @@ - - + + + diff --git a/src/Discord.Net.Core/Class1.cs b/src/Discord.Net.Core/Class1.cs deleted file mode 100644 index 27463cf1e..000000000 --- a/src/Discord.Net.Core/Class1.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -namespace Discord.Net.Core -{ - public class Class1 - { - } -} diff --git a/src/Discord.Net.Gateway/Class1.cs b/src/Discord.Net.Gateway/Class1.cs deleted file mode 100644 index 2474bbecb..000000000 --- a/src/Discord.Net.Gateway/Class1.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -namespace Discord.Net.Gateway -{ - public class Class1 - { - } -} diff --git a/src/Discord.Net.Gateway/Discord.Net.Gateway.csproj b/src/Discord.Net.Gateway/Discord.Net.Gateway.csproj deleted file mode 100644 index 9f5c4f4ab..000000000 --- a/src/Discord.Net.Gateway/Discord.Net.Gateway.csproj +++ /dev/null @@ -1,7 +0,0 @@ - - - - netstandard2.0 - - - diff --git a/src/Discord.Net.Rest/Class1.cs b/src/Discord.Net.Rest/Class1.cs deleted file mode 100644 index 671a29156..000000000 --- a/src/Discord.Net.Rest/Class1.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -namespace Discord.Net.Rest -{ - public class Class1 - { - } -} diff --git a/src/Discord.Net.Rest/Discord.Net.Rest.csproj b/src/Discord.Net.Rest/Discord.Net.Rest.csproj deleted file mode 100644 index 9f5c4f4ab..000000000 --- a/src/Discord.Net.Rest/Discord.Net.Rest.csproj +++ /dev/null @@ -1,7 +0,0 @@ - - - - netstandard2.0 - - - diff --git a/src/Discord.Net.Core/Discord.Net.Core.csproj b/src/Discord.Net/Discord.Net.csproj similarity index 100% rename from src/Discord.Net.Core/Discord.Net.Core.csproj rename to src/Discord.Net/Discord.Net.csproj diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs new file mode 100644 index 000000000..5147afa8f --- /dev/null +++ b/src/Discord.Net/DiscordClient.cs @@ -0,0 +1,58 @@ +using System; +using System.Net.Http.Headers; +using System.Threading.Tasks; +using Wumpus; +using Wumpus.Events; + +namespace Discord +{ + internal class DiscordClient : IDiscordClient, IDisposable + { + public event Action Ready; + + private int _shard, _totalShards; + + public WumpusGatewayClient Gateway { get; } + public WumpusRestClient Rest { get; } + + public DiscordClient(DiscordClientConfig config) + { + _shard = config.Shard; + _totalShards = config.TotalShards; + + Gateway = new WumpusGatewayClient(); + Rest = new WumpusRestClient(); + + var auth = new AuthenticationHeaderValue("", config.Token); + Gateway.Authorization = auth; + Rest.Authorization = auth; + } + + public async Task StartAsync() + { + var gateway = await Rest.GetBotGatewayAsync().ConfigureAwait(false); + await Gateway.RunAsync(gateway.Url.ToString(), _shard, _totalShards).ConfigureAwait(false); + } + + public async Task StopAsync() + { + await Gateway.StopAsync().ConfigureAwait(false); + } + + private void RegisterEvents() + { + Gateway.Ready += OnReady; + } + private void OnReady(ReadyEvent args) + { + // TODO: Cache + Ready?.Invoke(); + } + + public void Dispose() + { + Gateway.Dispose(); + Rest.Dispose(); + } + } +} diff --git a/src/Discord.Net/DiscordClientBuilder.cs b/src/Discord.Net/DiscordClientBuilder.cs new file mode 100644 index 000000000..c9e57dc50 --- /dev/null +++ b/src/Discord.Net/DiscordClientBuilder.cs @@ -0,0 +1,10 @@ +namespace Discord +{ + public sealed class DiscordClientBuilder + { + public IDiscordClient FromConfig(DiscordClientConfig config) + { + return new DiscordClient(config); + } + } +} diff --git a/src/Discord.Net/DiscordClientConfig.cs b/src/Discord.Net/DiscordClientConfig.cs new file mode 100644 index 000000000..b1e1407ee --- /dev/null +++ b/src/Discord.Net/DiscordClientConfig.cs @@ -0,0 +1,10 @@ +namespace Discord +{ + public class DiscordClientConfig + { + public string Token { get; set; } + + public int Shard { get; set; } = 0; + public int TotalShards { get; set; } = 1; + } +} diff --git a/src/Discord.Net/IDiscordClient.cs b/src/Discord.Net/IDiscordClient.cs new file mode 100644 index 000000000..4f6e022c4 --- /dev/null +++ b/src/Discord.Net/IDiscordClient.cs @@ -0,0 +1,17 @@ +using System; +using System.Threading.Tasks; +using Wumpus; + +namespace Discord +{ + public interface IDiscordClient + { + WumpusGatewayClient Gateway { get; } + WumpusRestClient Rest { get; } + + Task StartAsync(); + Task StopAsync(); + + event Action Ready; + } +}