Moved Frame models, added default providers

This commit is contained in:
RogueException
2017-02-17 23:06:18 -04:00
parent 9d7073fafe
commit d321ad3e5c
10 changed files with 81 additions and 8 deletions

View File

@@ -0,0 +1,3 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Discord.Net.Tests")]

View File

@@ -10,6 +10,6 @@ namespace Discord.Rest
internal const int WebSocketQueueInterval = 100;
/// <summary> Gets or sets the provider used to generate new REST connections. </summary>
public RestClientProvider RestClientProvider { get; set; } = url => new DefaultRestClient(url);
public RestClientProvider RestClientProvider { get; set; } = DefaultRestClientProvider.Instance;
}
}

View File

@@ -0,0 +1,19 @@
using System;
namespace Discord.Net.Rest
{
public static class DefaultRestClientProvider
{
public static readonly RestClientProvider Instance = url =>
{
try
{
return new DefaultRestClient(url);
}
catch (PlatformNotSupportedException ex)
{
throw new PlatformNotSupportedException("The default RestClientProvider is not supported on this platform.", ex);
}
};
}
}

View File

@@ -70,7 +70,7 @@ namespace Discord.WebSocket
}
}
private static API.DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config)
=> new API.DiscordSocketApiClient(config.RestClientProvider, DiscordRestConfig.UserAgent, config.WebSocketProvider);
=> new API.DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent);
protected override async Task OnLoginAsync(TokenType tokenType, string token)
{

View File

@@ -142,7 +142,7 @@ namespace Discord.WebSocket
_largeGuilds = new ConcurrentQueue<ulong>();
}
private static API.DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config)
=> new API.DiscordSocketApiClient(config.RestClientProvider, DiscordRestConfig.UserAgent, config.WebSocketProvider);
=> new API.DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent);
protected override async Task OnLoginAsync(TokenType tokenType, string token)
{
@@ -232,7 +232,8 @@ namespace Discord.WebSocket
ConnectionState = ConnectionState.Connected;
await _gatewayLogger.InfoAsync("Connected").ConfigureAwait(false);
await ProcessUserDownloadsAsync(_downloadUsersFor.Select(x => GetGuild(x)).Where(x => x != null).ToImmutableArray()).ConfigureAwait(false);
await ProcessUserDownloadsAsync(_downloadUsersFor.Select(x => GetGuild(x))
.Where(x => x != null).ToImmutableArray()).ConfigureAwait(false);
}
catch (Exception)
{

View File

@@ -0,0 +1,27 @@
using System;
namespace Discord.Net.Udp
{
public static class DefaultUdpSocketProvider
{
#if NETSTANDARD1_3
public static readonly UdpSocketProvider Instance = () =>
{
try
{
return new DefaultUdpSocket();
}
catch (PlatformNotSupportedException ex)
{
throw new PlatformNotSupportedException("The default UdpSocketProvider is not supported on this platform.", ex);
}
};
#else
public static readonly UdpSocketProvider Instance = () =>
{
throw new PlatformNotSupportedException("The default UdpSocketProvider is not supported on this platform.\n" +
"You must specify a UdpSocketProvider or target a runtime supporting .NET Standard 1.3, such as .NET Framework 4.6+.");
};
#endif
}
}

View File

@@ -206,15 +206,11 @@ namespace Discord.Net.WebSockets
//Use the internal buffer if we can get it
resultCount = (int)stream.Length;
#if NETSTANDARD1_3
ArraySegment<byte> streamBuffer;
if (stream.TryGetBuffer(out streamBuffer))
result = streamBuffer.Array;
else
result = stream.ToArray();
#else
result = stream.ToArray();
#endif
}
}
else

View File

@@ -0,0 +1,27 @@
using System;
namespace Discord.Net.WebSockets
{
public static class DefaultWebSocketProvider
{
#if NETSTANDARD1_3
public static readonly WebSocketProvider Instance = () =>
{
try
{
return new DefaultWebSocketClient();
}
catch (PlatformNotSupportedException ex)
{
throw new PlatformNotSupportedException("The default WebSocketProvider is not supported on this platform.", ex);
}
};
#else
public static readonly WebSocketProvider Instance = () =>
{
throw new PlatformNotSupportedException("The default WebSocketProvider is not supported on this platform.\n" +
"You must specify a WebSocketProvider or target a runtime supporting .NET Standard 1.3, such as .NET Framework 4.6+.");
};
#endif
}
}