From e4569f1a3922e8eff8beff5b4884500285de89ee Mon Sep 17 00:00:00 2001 From: RogueException Date: Thu, 28 Jul 2016 21:39:43 -0300 Subject: [PATCH] Added RpcToken param --- src/Discord.Net/API/DiscordRpcAPIClient.cs | 15 ++++++++++----- src/Discord.Net/API/Rpc/AuthorizeParams.cs | 2 ++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net/API/DiscordRpcAPIClient.cs b/src/Discord.Net/API/DiscordRpcAPIClient.cs index 923371c45..6b1256cbb 100644 --- a/src/Discord.Net/API/DiscordRpcAPIClient.cs +++ b/src/Discord.Net/API/DiscordRpcAPIClient.cs @@ -148,13 +148,15 @@ namespace Discord.API _webSocketClient.SetCancelToken(_connectCancelToken.Token); bool success = false; - for (int port = DiscordRpcConfig.PortRangeStart; port <= DiscordRpcConfig.PortRangeEnd; port++) + int port; + string uuid = Guid.NewGuid().ToString(); + + for ( port = DiscordRpcConfig.PortRangeStart; port <= DiscordRpcConfig.PortRangeEnd; port++) { try { - string url = $"wss://discordapp.io:{port}/?v={DiscordRpcConfig.RpcAPIVersion}&client_id={_clientId}"; + string url = $"wss://{uuid}.discordapp.io:{port}/?v={DiscordRpcConfig.RpcAPIVersion}&client_id={_clientId}"; await _webSocketClient.ConnectAsync(url).ConfigureAwait(false); - SetBaseUrl($"https://discordapp.io:{port}/"); success = true; break; } @@ -162,9 +164,11 @@ namespace Discord.API { } } + if (!success) throw new Exception("Unable to connect to the RPC server."); + SetBaseUrl($"https://{uuid}.discordapp.io:{port}/"); ConnectionState = ConnectionState.Connected; } catch (Exception) @@ -238,12 +242,13 @@ namespace Discord.API }; return await SendRpcAsync("AUTHENTICATE", msg, options: options).ConfigureAwait(false); } - public async Task SendAuthorizeAsync(string[] scopes, RequestOptions options = null) + public async Task SendAuthorizeAsync(string[] scopes, string rpcToken = null, RequestOptions options = null) { var msg = new AuthorizeParams() { ClientId = _clientId, - Scopes = scopes + Scopes = scopes, + RpcToken = rpcToken != null ? rpcToken : Optional.Create() }; if (options == null) options = new RequestOptions(); diff --git a/src/Discord.Net/API/Rpc/AuthorizeParams.cs b/src/Discord.Net/API/Rpc/AuthorizeParams.cs index bf8bd162a..a16664861 100644 --- a/src/Discord.Net/API/Rpc/AuthorizeParams.cs +++ b/src/Discord.Net/API/Rpc/AuthorizeParams.cs @@ -8,5 +8,7 @@ namespace Discord.API.Rpc public string ClientId { get; set; } [JsonProperty("scopes")] public string[] Scopes { get; set; } + [JsonProperty("rpc_token")] + public Optional RpcToken { get; set; } } }