diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj index 11f2c1766..e7dda6c3c 100644 --- a/src/Discord.Net.Net45/Discord.Net.csproj +++ b/src/Discord.Net.Net45/Discord.Net.csproj @@ -244,41 +244,47 @@ Models\User.cs - - Net\DataWebSocket.cs - - - Net\DataWebSockets.Events.cs - Net\HttpException.cs - - Net\RestClient.cs + + Net\Rest\RestClient.cs + + + Net\Rest\RestClient.Events.cs + + + Net\Rest\SharpRestRestClient.cs + + + Net\Voice\IDiscordVoiceBuffer.cs + + + Net\Voice\IDiscordVoiceClient.cs - - Net\RestClient.Events.cs + + Net\Voice\VoiceBuffer.cs - - Net\RestClient.SharpRest.cs + + Net\WebSockets\DataWebSocket.cs - - Net\VoiceBuffer.cs + + Net\WebSockets\DataWebSockets.Events.cs - - Net\VoiceWebSocket.cs + + Net\WebSockets\VoiceWebSocket.cs - - Net\VoiceWebSocket.Events.cs + + Net\WebSockets\VoiceWebSocket.Events.cs - - Net\WebSocket.cs + + Net\WebSockets\WebSocket.cs - - Net\WebSocket.Events.cs + + Net\WebSockets\WebSocket.Events.cs - - Net\WebSocket.WebSocketSharp.cs + + Net\WebSockets\WebSocket.WebSocketSharp.cs diff --git a/src/Discord.Net/DiscordAPIClient.cs b/src/Discord.Net/DiscordAPIClient.cs index 975b9aa6d..49e34ea57 100644 --- a/src/Discord.Net/DiscordAPIClient.cs +++ b/src/Discord.Net/DiscordAPIClient.cs @@ -1,5 +1,6 @@ using Discord.API; using Discord.Net; +using Discord.Net.Rest; using System; using System.Collections.Generic; using System.Linq; @@ -19,7 +20,7 @@ namespace Discord public DiscordAPIClient(DiscordAPIClientConfig config = null) { _config = config ?? new DiscordAPIClientConfig(); - _rest = new RestClient(_config); + _rest = new SharpRestRestClient(_config); } private string _token; diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 8a2709a8d..428a6239b 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -1,6 +1,8 @@ using Discord.API; using Discord.Collections; using Discord.Net; +using Discord.Net.Voice; +using Discord.Net.WebSockets; using Newtonsoft.Json; using System; using System.Collections.Concurrent; diff --git a/src/Discord.Net/DiscordWebSocketClient.Voice.cs b/src/Discord.Net/DiscordWebSocketClient.Voice.cs index e6e2c72a3..c45339a11 100644 --- a/src/Discord.Net/DiscordWebSocketClient.Voice.cs +++ b/src/Discord.Net/DiscordWebSocketClient.Voice.cs @@ -1,28 +1,9 @@ -using System; +using Discord.Net.Voice; +using System; using System.Threading.Tasks; namespace Discord { - public interface IDiscordVoiceBuffer - { - int FrameSize { get; } - int FrameCount { get; } - ushort ReadPos { get; } - ushort WritePos { get; } - } - - public interface IDiscordVoiceClient - { - IDiscordVoiceBuffer OutputBuffer { get; } - - Task JoinChannel(string channelId); - - void SendVoicePCM(byte[] data, int count); - void ClearVoicePCM(); - - Task WaitVoice(); - } - public partial class DiscordWebSocketClient : IDiscordVoiceClient { IDiscordVoiceBuffer IDiscordVoiceClient.OutputBuffer => _voiceSocket.OutputBuffer; diff --git a/src/Discord.Net/DiscordWebSocketClient.cs b/src/Discord.Net/DiscordWebSocketClient.cs index 45cac4f17..7ab63a12f 100644 --- a/src/Discord.Net/DiscordWebSocketClient.cs +++ b/src/Discord.Net/DiscordWebSocketClient.cs @@ -1,4 +1,5 @@ using Discord.Net; +using Discord.Net.WebSockets; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Discord.Net/Net/RestClient.Events.cs b/src/Discord.Net/Net/Rest/RestClient.Events.cs similarity index 90% rename from src/Discord.Net/Net/RestClient.Events.cs rename to src/Discord.Net/Net/Rest/RestClient.Events.cs index 85c4d02a1..88cd55713 100644 --- a/src/Discord.Net/Net/RestClient.Events.cs +++ b/src/Discord.Net/Net/Rest/RestClient.Events.cs @@ -1,9 +1,9 @@ using System; using System.Net.Http; -namespace Discord.Net +namespace Discord.Net.Rest { - internal partial class RestClient + internal abstract partial class RestClient { public class RequestEventArgs : EventArgs { diff --git a/src/Discord.Net/Net/RestClient.cs b/src/Discord.Net/Net/Rest/RestClient.cs similarity index 92% rename from src/Discord.Net/Net/RestClient.cs rename to src/Discord.Net/Net/Rest/RestClient.cs index e8fa94db7..2b161ea0d 100644 --- a/src/Discord.Net/Net/RestClient.cs +++ b/src/Discord.Net/Net/Rest/RestClient.cs @@ -6,19 +6,21 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; -namespace Discord.Net +namespace Discord.Net.Rest { - internal partial class RestClient + internal abstract partial class RestClient { - private readonly DiscordAPIClientConfig _config; - private CancellationToken _cancelToken; + protected readonly DiscordAPIClientConfig _config; + protected CancellationToken _cancelToken; public RestClient(DiscordAPIClientConfig config) { _config = config; - Initialize(); } - partial void Initialize(); + + protected internal abstract void SetToken(string token); + protected abstract Task SendInternal(HttpMethod method, string path, string json, CancellationToken cancelToken); + protected abstract Task SendFileInternal(HttpMethod method, string path, string filePath, CancellationToken cancelToken); //DELETE private static readonly HttpMethod _delete = HttpMethod.Delete; diff --git a/src/Discord.Net/Net/RestClient.SharpRest.cs b/src/Discord.Net/Net/Rest/SharpRestRestClient.cs similarity index 79% rename from src/Discord.Net/Net/RestClient.SharpRest.cs rename to src/Discord.Net/Net/Rest/SharpRestRestClient.cs index 1a9955233..918d3d204 100644 --- a/src/Discord.Net/Net/RestClient.SharpRest.cs +++ b/src/Discord.Net/Net/Rest/SharpRestRestClient.cs @@ -6,13 +6,14 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; -namespace Discord.Net +namespace Discord.Net.Rest { - internal partial class RestClient + internal sealed class SharpRestRestClient : RestClient { - private RestSharp.RestClient _client; + private readonly RestSharp.RestClient _client; - partial void Initialize() + public SharpRestRestClient(DiscordAPIClientConfig config) + : base(config) { _client = new RestSharp.RestClient(Endpoints.BaseApi) { @@ -26,20 +27,20 @@ namespace Discord.Net _client.AddDefaultHeader("accept-encoding", "gzip,deflate"); } - internal void SetToken(string token) + protected internal override void SetToken(string token) { _client.RemoveDefaultParameter("authorization"); if (token != null) _client.AddDefaultHeader("authorization", token); } - private Task SendInternal(HttpMethod method, string path, string json, CancellationToken cancelToken) + protected override Task SendInternal(HttpMethod method, string path, string json, CancellationToken cancelToken) { var request = new RestRequest(path, GetMethod(method)); request.AddParameter("application/json", json, ParameterType.RequestBody); return Send(request, cancelToken); } - private Task SendFileInternal(HttpMethod method, string path, string filePath, CancellationToken cancelToken) + protected override Task SendFileInternal(HttpMethod method, string path, string filePath, CancellationToken cancelToken) { var request = new RestRequest(path, Method.POST); request.AddFile("file", filePath); diff --git a/src/Discord.Net/Net/Voice/IDiscordVoiceBuffer.cs b/src/Discord.Net/Net/Voice/IDiscordVoiceBuffer.cs new file mode 100644 index 000000000..cf301bef7 --- /dev/null +++ b/src/Discord.Net/Net/Voice/IDiscordVoiceBuffer.cs @@ -0,0 +1,10 @@ +namespace Discord.Net.Voice +{ + public interface IDiscordVoiceBuffer + { + int FrameSize { get; } + int FrameCount { get; } + ushort ReadPos { get; } + ushort WritePos { get; } + } +} diff --git a/src/Discord.Net/Net/Voice/IDiscordVoiceClient.cs b/src/Discord.Net/Net/Voice/IDiscordVoiceClient.cs new file mode 100644 index 000000000..5cbf0a4fe --- /dev/null +++ b/src/Discord.Net/Net/Voice/IDiscordVoiceClient.cs @@ -0,0 +1,16 @@ +using System.Threading.Tasks; + +namespace Discord.Net.Voice +{ + public interface IDiscordVoiceClient + { + IDiscordVoiceBuffer OutputBuffer { get; } + + Task JoinChannel(string channelId); + + void SendVoicePCM(byte[] data, int count); + void ClearVoicePCM(); + + Task WaitVoice(); + } +} diff --git a/src/Discord.Net/Net/VoiceBuffer.cs b/src/Discord.Net/Net/Voice/VoiceBuffer.cs similarity index 99% rename from src/Discord.Net/Net/VoiceBuffer.cs rename to src/Discord.Net/Net/Voice/VoiceBuffer.cs index 29bcb8e77..84d24541a 100644 --- a/src/Discord.Net/Net/VoiceBuffer.cs +++ b/src/Discord.Net/Net/Voice/VoiceBuffer.cs @@ -1,7 +1,7 @@ using System; using System.Threading; -namespace Discord.Net +namespace Discord.Net.Voice { internal class VoiceBuffer : IDiscordVoiceBuffer { diff --git a/src/Discord.Net/Net/DataWebSocket.cs b/src/Discord.Net/Net/WebSockets/DataWebSocket.cs similarity index 99% rename from src/Discord.Net/Net/DataWebSocket.cs rename to src/Discord.Net/Net/WebSockets/DataWebSocket.cs index 2c800efa5..8976948e0 100644 --- a/src/Discord.Net/Net/DataWebSocket.cs +++ b/src/Discord.Net/Net/WebSockets/DataWebSocket.cs @@ -4,7 +4,7 @@ using Newtonsoft.Json.Linq; using System; using System.Threading.Tasks; -namespace Discord.Net +namespace Discord.Net.WebSockets { internal partial class DataWebSocket : WebSocket { diff --git a/src/Discord.Net/Net/DataWebSockets.Events.cs b/src/Discord.Net/Net/WebSockets/DataWebSockets.Events.cs similarity index 94% rename from src/Discord.Net/Net/DataWebSockets.Events.cs rename to src/Discord.Net/Net/WebSockets/DataWebSockets.Events.cs index 6f5177fe1..f823a415a 100644 --- a/src/Discord.Net/Net/DataWebSockets.Events.cs +++ b/src/Discord.Net/Net/WebSockets/DataWebSockets.Events.cs @@ -1,7 +1,7 @@ using Newtonsoft.Json.Linq; using System; -namespace Discord.Net +namespace Discord.Net.WebSockets { internal sealed class WebSocketEventEventArgs : EventArgs { diff --git a/src/Discord.Net/Net/VoiceWebSocket.Events.cs b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.Events.cs similarity index 96% rename from src/Discord.Net/Net/VoiceWebSocket.Events.cs rename to src/Discord.Net/Net/WebSockets/VoiceWebSocket.Events.cs index 82f525158..1146d6cc2 100644 --- a/src/Discord.Net/Net/VoiceWebSocket.Events.cs +++ b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.Events.cs @@ -1,6 +1,6 @@ using System; -namespace Discord.Net +namespace Discord.Net.WebSockets { internal sealed class IsTalkingEventArgs : EventArgs { diff --git a/src/Discord.Net/Net/VoiceWebSocket.cs b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs similarity index 99% rename from src/Discord.Net/Net/VoiceWebSocket.cs rename to src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs index a8074e399..3dc7fed89 100644 --- a/src/Discord.Net/Net/VoiceWebSocket.cs +++ b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs @@ -1,6 +1,7 @@ #define USE_THREAD using Discord.API; using Discord.Interop; +using Discord.Net.Voice; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; @@ -14,7 +15,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; -namespace Discord.Net +namespace Discord.Net.WebSockets { internal partial class VoiceWebSocket : WebSocket { diff --git a/src/Discord.Net/Net/WebSocket.BuiltIn.cs.old b/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs.old similarity index 99% rename from src/Discord.Net/Net/WebSocket.BuiltIn.cs.old rename to src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs.old index af375e743..17a8f7be1 100644 --- a/src/Discord.Net/Net/WebSocket.BuiltIn.cs.old +++ b/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs.old @@ -9,7 +9,7 @@ using System.Threading; using System.Threading.Tasks; using State = System.Net.WebSockets.WebSocketState; -namespace Discord.WebSockets +namespace Discord.Net.WebSockets { internal class BuiltInWebSocketEngine : IWebSocketEngine { diff --git a/src/Discord.Net/Net/WebSocket.Events.cs b/src/Discord.Net/Net/WebSockets/WebSocket.Events.cs similarity index 95% rename from src/Discord.Net/Net/WebSocket.Events.cs rename to src/Discord.Net/Net/WebSockets/WebSocket.Events.cs index 1c2383198..f7b4c078a 100644 --- a/src/Discord.Net/Net/WebSocket.Events.cs +++ b/src/Discord.Net/Net/WebSockets/WebSocket.Events.cs @@ -1,6 +1,6 @@ using System; -namespace Discord.Net +namespace Discord.Net.WebSockets { internal abstract partial class WebSocket { diff --git a/src/Discord.Net/Net/WebSocket.WebSocketSharp.cs b/src/Discord.Net/Net/WebSockets/WebSocket.WebSocketSharp.cs similarity index 98% rename from src/Discord.Net/Net/WebSocket.WebSocketSharp.cs rename to src/Discord.Net/Net/WebSockets/WebSocket.WebSocketSharp.cs index 0feb6e90a..bc5aff3e0 100644 --- a/src/Discord.Net/Net/WebSocket.WebSocketSharp.cs +++ b/src/Discord.Net/Net/WebSockets/WebSocket.WebSocketSharp.cs @@ -6,7 +6,7 @@ using System.Threading; using System.Threading.Tasks; using WSSharpNWebSocket = WebSocketSharp.WebSocket; -namespace Discord.Net +namespace Discord.Net.WebSockets { internal class WSSharpWebSocketEngine : IWebSocketEngine { diff --git a/src/Discord.Net/Net/WebSocket.cs b/src/Discord.Net/Net/WebSockets/WebSocket.cs similarity index 99% rename from src/Discord.Net/Net/WebSocket.cs rename to src/Discord.Net/Net/WebSockets/WebSocket.cs index 75bfb136c..4ef471845 100644 --- a/src/Discord.Net/Net/WebSocket.cs +++ b/src/Discord.Net/Net/WebSockets/WebSocket.cs @@ -6,7 +6,7 @@ using System.Runtime.ExceptionServices; using System.Threading; using System.Threading.Tasks; -namespace Discord.Net +namespace Discord.Net.WebSockets { public enum WebSocketState : byte {