| @@ -0,0 +1,3 @@ | |||||
| using System.Runtime.CompilerServices; | |||||
| [assembly: InternalsVisibleTo("Discord.Net.Tests")] | |||||
| @@ -10,6 +10,6 @@ namespace Discord.Rest | |||||
| internal const int WebSocketQueueInterval = 100; | internal const int WebSocketQueueInterval = 100; | ||||
| /// <summary> Gets or sets the provider used to generate new REST connections. </summary> | /// <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; | |||||
| } | } | ||||
| } | } | ||||
| @@ -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); | |||||
| } | |||||
| }; | |||||
| } | |||||
| } | |||||
| @@ -70,7 +70,7 @@ namespace Discord.WebSocket | |||||
| } | } | ||||
| } | } | ||||
| private static API.DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config) | 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) | protected override async Task OnLoginAsync(TokenType tokenType, string token) | ||||
| { | { | ||||
| @@ -142,7 +142,7 @@ namespace Discord.WebSocket | |||||
| _largeGuilds = new ConcurrentQueue<ulong>(); | _largeGuilds = new ConcurrentQueue<ulong>(); | ||||
| } | } | ||||
| private static API.DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config) | 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) | protected override async Task OnLoginAsync(TokenType tokenType, string token) | ||||
| { | { | ||||
| @@ -232,7 +232,8 @@ namespace Discord.WebSocket | |||||
| ConnectionState = ConnectionState.Connected; | ConnectionState = ConnectionState.Connected; | ||||
| await _gatewayLogger.InfoAsync("Connected").ConfigureAwait(false); | 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) | catch (Exception) | ||||
| { | { | ||||
| @@ -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 | |||||
| } | |||||
| } | |||||
| @@ -206,15 +206,11 @@ namespace Discord.Net.WebSockets | |||||
| //Use the internal buffer if we can get it | //Use the internal buffer if we can get it | ||||
| resultCount = (int)stream.Length; | resultCount = (int)stream.Length; | ||||
| #if NETSTANDARD1_3 | |||||
| ArraySegment<byte> streamBuffer; | ArraySegment<byte> streamBuffer; | ||||
| if (stream.TryGetBuffer(out streamBuffer)) | if (stream.TryGetBuffer(out streamBuffer)) | ||||
| result = streamBuffer.Array; | result = streamBuffer.Array; | ||||
| else | else | ||||
| result = stream.ToArray(); | result = stream.ToArray(); | ||||
| #else | |||||
| result = stream.ToArray(); | |||||
| #endif | |||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| @@ -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 | |||||
| } | |||||
| } | |||||