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
{