diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj
index e7dda6c3c..8b2b605bc 100644
--- a/src/Discord.Net.Net45/Discord.Net.csproj
+++ b/src/Discord.Net.Net45/Discord.Net.csproj
@@ -247,14 +247,17 @@
Net\HttpException.cs
+
+ Net\Rest\IRestEngine.cs
+
Net\Rest\RestClient.cs
Net\Rest\RestClient.Events.cs
-
- Net\Rest\SharpRestRestClient.cs
+
+ Net\Rest\SharpRestEngine.cs
Net\Voice\IDiscordVoiceBuffer.cs
@@ -271,6 +274,9 @@
Net\WebSockets\DataWebSockets.Events.cs
+
+ Net\WebSockets\IWebSocketEngine.cs
+
Net\WebSockets\VoiceWebSocket.cs
@@ -283,8 +289,8 @@
Net\WebSockets\WebSocket.Events.cs
-
- Net\WebSockets\WebSocket.WebSocketSharp.cs
+
+ Net\WebSockets\WebSocketSharpEngine.cs
diff --git a/src/Discord.Net/DiscordAPIClient.cs b/src/Discord.Net/DiscordAPIClient.cs
index 49e34ea57..bea5e5788 100644
--- a/src/Discord.Net/DiscordAPIClient.cs
+++ b/src/Discord.Net/DiscordAPIClient.cs
@@ -20,7 +20,7 @@ namespace Discord
public DiscordAPIClient(DiscordAPIClientConfig config = null)
{
_config = config ?? new DiscordAPIClientConfig();
- _rest = new SharpRestRestClient(_config);
+ _rest = new RestClient(_config);
}
private string _token;
diff --git a/src/Discord.Net/Net/Rest/IRestEngine.cs b/src/Discord.Net/Net/Rest/IRestEngine.cs
new file mode 100644
index 000000000..3bed09f40
--- /dev/null
+++ b/src/Discord.Net/Net/Rest/IRestEngine.cs
@@ -0,0 +1,13 @@
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Discord.Net.Rest
+{
+ internal interface IRestEngine
+ {
+ void SetToken(string token);
+ Task Send(HttpMethod method, string path, string json, CancellationToken cancelToken);
+ Task SendFile(HttpMethod method, string path, string filePath, CancellationToken cancelToken);
+ }
+}
diff --git a/src/Discord.Net/Net/Rest/RestClient.Events.cs b/src/Discord.Net/Net/Rest/RestClient.Events.cs
index 88cd55713..b12fe997f 100644
--- a/src/Discord.Net/Net/Rest/RestClient.Events.cs
+++ b/src/Discord.Net/Net/Rest/RestClient.Events.cs
@@ -3,7 +3,7 @@ using System.Net.Http;
namespace Discord.Net.Rest
{
- internal abstract partial class RestClient
+ internal sealed partial class RestClient
{
public class RequestEventArgs : EventArgs
{
@@ -21,7 +21,7 @@ namespace Discord.Net.Rest
}
public event EventHandler OnRequest;
- protected void RaiseOnRequest(HttpMethod method, string path, string payload, double milliseconds)
+ private void RaiseOnRequest(HttpMethod method, string path, string payload, double milliseconds)
{
if (OnRequest != null)
OnRequest(this, new RequestEventArgs(method, path, payload, milliseconds));
diff --git a/src/Discord.Net/Net/Rest/RestClient.cs b/src/Discord.Net/Net/Rest/RestClient.cs
index 2b161ea0d..0cc6fb276 100644
--- a/src/Discord.Net/Net/Rest/RestClient.cs
+++ b/src/Discord.Net/Net/Rest/RestClient.cs
@@ -8,19 +8,19 @@ using System.Threading.Tasks;
namespace Discord.Net.Rest
{
- internal abstract partial class RestClient
+ internal sealed partial class RestClient
{
- protected readonly DiscordAPIClientConfig _config;
- protected CancellationToken _cancelToken;
+ private readonly DiscordAPIClientConfig _config;
+ private readonly IRestEngine _engine;
+ private CancellationToken _cancelToken;
public RestClient(DiscordAPIClientConfig config)
{
_config = config;
+ _engine = new SharpRestEngine(config);
}
- 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);
+ public void SetToken(string token) => _engine.SetToken(token);
//DELETE
private static readonly HttpMethod _delete = HttpMethod.Delete;
@@ -95,7 +95,7 @@ namespace Discord.Net.Rest
if (_config.LogLevel >= LogMessageSeverity.Verbose)
stopwatch = Stopwatch.StartNew();
- string responseJson = await SendInternal(method, path, requestJson, _cancelToken).ConfigureAwait(false);
+ string responseJson = await _engine.Send(method, path, requestJson, _cancelToken).ConfigureAwait(false);
#if TEST_RESPONSES
if (!hasResponse && !string.IsNullOrEmpty(responseJson))
@@ -134,7 +134,7 @@ namespace Discord.Net.Rest
if (_config.LogLevel >= LogMessageSeverity.Verbose)
stopwatch = Stopwatch.StartNew();
- string responseJson = await SendFileInternal(method, path, filePath, _cancelToken).ConfigureAwait(false);
+ string responseJson = await _engine.SendFile(method, path, filePath, _cancelToken).ConfigureAwait(false);
#if TEST_RESPONSES
if (!hasResponse && !string.IsNullOrEmpty(responseJson))
diff --git a/src/Discord.Net/Net/Rest/SharpRestRestClient.cs b/src/Discord.Net/Net/Rest/SharpRestEngine.cs
similarity index 82%
rename from src/Discord.Net/Net/Rest/SharpRestRestClient.cs
rename to src/Discord.Net/Net/Rest/SharpRestEngine.cs
index 918d3d204..553746f14 100644
--- a/src/Discord.Net/Net/Rest/SharpRestRestClient.cs
+++ b/src/Discord.Net/Net/Rest/SharpRestEngine.cs
@@ -8,13 +8,14 @@ using System.Threading.Tasks;
namespace Discord.Net.Rest
{
- internal sealed class SharpRestRestClient : RestClient
+ internal sealed class SharpRestEngine : IRestEngine
{
+ private readonly DiscordAPIClientConfig _config;
private readonly RestSharp.RestClient _client;
- public SharpRestRestClient(DiscordAPIClientConfig config)
- : base(config)
+ public SharpRestEngine(DiscordAPIClientConfig config)
{
+ _config = config;
_client = new RestSharp.RestClient(Endpoints.BaseApi)
{
PreAuthenticate = false,
@@ -27,20 +28,20 @@ namespace Discord.Net.Rest
_client.AddDefaultHeader("accept-encoding", "gzip,deflate");
}
- protected internal override void SetToken(string token)
+ public void SetToken(string token)
{
_client.RemoveDefaultParameter("authorization");
if (token != null)
_client.AddDefaultHeader("authorization", token);
}
- protected override Task SendInternal(HttpMethod method, string path, string json, CancellationToken cancelToken)
+ public Task Send(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);
}
- protected override Task SendFileInternal(HttpMethod method, string path, string filePath, CancellationToken cancelToken)
+ public Task SendFile(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/WebSockets/IWebSocketEngine.cs b/src/Discord.Net/Net/WebSockets/IWebSocketEngine.cs
new file mode 100644
index 000000000..5ee746542
--- /dev/null
+++ b/src/Discord.Net/Net/WebSockets/IWebSocketEngine.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Discord.Net.WebSockets
+{
+ internal class WebSocketMessageEventArgs : EventArgs
+ {
+ public readonly string Message;
+ public WebSocketMessageEventArgs(string msg) { Message = msg; }
+ }
+
+ internal interface IWebSocketEngine
+ {
+ event EventHandler ProcessMessage;
+
+ Task Connect(string host, CancellationToken cancelToken);
+ Task Disconnect();
+ void QueueMessage(string message);
+ IEnumerable GetTasks(CancellationToken cancelToken);
+ }
+}
diff --git a/src/Discord.Net/Net/WebSockets/WebSocket.cs b/src/Discord.Net/Net/WebSockets/WebSocket.cs
index 4ef471845..e673e42cb 100644
--- a/src/Discord.Net/Net/WebSockets/WebSocket.cs
+++ b/src/Discord.Net/Net/WebSockets/WebSocket.cs
@@ -16,21 +16,6 @@ namespace Discord.Net.WebSockets
Disconnecting
}
- internal class WebSocketMessageEventArgs : EventArgs
- {
- public readonly string Message;
- public WebSocketMessageEventArgs(string msg) { Message = msg; }
- }
- internal interface IWebSocketEngine
- {
- event EventHandler ProcessMessage;
-
- Task Connect(string host, CancellationToken cancelToken);
- Task Disconnect();
- void QueueMessage(string message);
- IEnumerable GetTasks(CancellationToken cancelToken);
- }
-
internal abstract partial class WebSocket
{
protected readonly IWebSocketEngine _engine;
@@ -65,7 +50,7 @@ namespace Discord.Net.WebSockets
_cancelToken = new CancellationToken(true);
_connectedEvent = new ManualResetEventSlim(false);
- _engine = new WSSharpWebSocketEngine(this, client.Config);
+ _engine = new WebSocketSharpEngine(this, client.Config);
_engine.ProcessMessage += async (s, e) =>
{
if (_logLevel >= LogMessageSeverity.Debug)
diff --git a/src/Discord.Net/Net/WebSockets/WebSocket.WebSocketSharp.cs b/src/Discord.Net/Net/WebSockets/WebSocketSharpEngine.cs
similarity index 94%
rename from src/Discord.Net/Net/WebSockets/WebSocket.WebSocketSharp.cs
rename to src/Discord.Net/Net/WebSockets/WebSocketSharpEngine.cs
index bc5aff3e0..0538d160a 100644
--- a/src/Discord.Net/Net/WebSockets/WebSocket.WebSocketSharp.cs
+++ b/src/Discord.Net/Net/WebSockets/WebSocketSharpEngine.cs
@@ -8,7 +8,7 @@ using WSSharpNWebSocket = WebSocketSharp.WebSocket;
namespace Discord.Net.WebSockets
{
- internal class WSSharpWebSocketEngine : IWebSocketEngine
+ internal class WebSocketSharpEngine : IWebSocketEngine
{
private readonly DiscordWebSocketClientConfig _config;
private readonly ConcurrentQueue _sendQueue;
@@ -22,7 +22,7 @@ namespace Discord.Net.WebSockets
ProcessMessage(this, new WebSocketMessageEventArgs(msg));
}
- internal WSSharpWebSocketEngine(WebSocket parent, DiscordWebSocketClientConfig config)
+ internal WebSocketSharpEngine(WebSocket parent, DiscordWebSocketClientConfig config)
{
_parent = parent;
_config = config;