From 260a0153f450688f3b66b90cde605777bc333fab Mon Sep 17 00:00:00 2001 From: RogueException Date: Fri, 29 Jul 2016 18:11:41 -0300 Subject: [PATCH] Moved Rpc/WebSocket entities, fixed nullref on RPC message events --- src/Discord.Net/API/DiscordRpcAPIClient.cs | 8 ++++---- src/Discord.Net/Entities/Messages/Message.cs | 1 - src/Discord.Net/Rpc/DiscordRpcClient.cs | 4 ++-- .../{Entities/Rpc => Rpc/Entities}/IRemoteUserGuild.cs | 6 +++--- .../{Entities/Rpc => Rpc/Entities}/RemoteUserGuild.cs | 6 +++--- src/Discord.Net/Rpc/Entities/RpcMessage.cs | 15 +++++++++++++++ .../Entities}/Channels/ISocketChannel.cs | 0 .../Entities}/Channels/ISocketGuildChannel.cs | 0 .../Entities}/Channels/ISocketMessageChannel.cs | 0 .../Entities}/Channels/ISocketPrivateChannel.cs | 0 .../Entities}/Channels/MessageCache.cs | 0 .../Entities}/Channels/MessageManager.cs | 0 .../Entities}/Channels/SocketDMChannel.cs | 0 .../Entities}/Channels/SocketGroupChannel.cs | 0 .../Entities}/Channels/SocketTextChannel.cs | 0 .../Entities}/Channels/SocketVoiceChannel.cs | 0 .../Entities}/Guilds/SocketGuild.cs | 0 .../Entities}/Messages/SocketMessage.cs | 0 .../WebSocket => WebSocket/Entities}/Users/ISocketUser.cs | 0 .../WebSocket => WebSocket/Entities}/Users/Presence.cs | 0 .../Entities}/Users/SocketDMUser.cs | 0 .../Entities}/Users/SocketGlobalUser.cs | 0 .../Entities}/Users/SocketGroupUser.cs | 0 .../Entities}/Users/SocketGuildUser.cs | 0 .../Entities}/Users/SocketSelfUser.cs | 0 .../WebSocket => WebSocket/Entities}/Users/VoiceState.cs | 0 26 files changed, 27 insertions(+), 13 deletions(-) rename src/Discord.Net/{Entities/Rpc => Rpc/Entities}/IRemoteUserGuild.cs (51%) rename src/Discord.Net/{Entities/Rpc => Rpc/Entities}/RemoteUserGuild.cs (86%) create mode 100644 src/Discord.Net/Rpc/Entities/RpcMessage.cs rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/ISocketChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/ISocketGuildChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/ISocketMessageChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/ISocketPrivateChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/MessageCache.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/MessageManager.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/SocketDMChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/SocketGroupChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/SocketTextChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Channels/SocketVoiceChannel.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Guilds/SocketGuild.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Messages/SocketMessage.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/ISocketUser.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/Presence.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/SocketDMUser.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/SocketGlobalUser.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/SocketGroupUser.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/SocketGuildUser.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/SocketSelfUser.cs (100%) rename src/Discord.Net/{Entities/WebSocket => WebSocket/Entities}/Users/VoiceState.cs (100%) diff --git a/src/Discord.Net/API/DiscordRpcAPIClient.cs b/src/Discord.Net/API/DiscordRpcAPIClient.cs index 27c8a68c0..e82c5c83f 100644 --- a/src/Discord.Net/API/DiscordRpcAPIClient.cs +++ b/src/Discord.Net/API/DiscordRpcAPIClient.cs @@ -90,7 +90,7 @@ namespace Discord.API using (var reader = new StreamReader(decompressed)) using (var jsonReader = new JsonTextReader(reader)) { - var msg = _serializer.Deserialize(jsonReader); + var msg = _serializer.Deserialize(jsonReader); await _receivedRpcEvent.InvokeAsync(msg.Cmd, msg.Event, msg.Data).ConfigureAwait(false); if (msg.Nonce.IsSpecified && msg.Nonce.Value.HasValue) ProcessMessage(msg); @@ -102,7 +102,7 @@ namespace Discord.API using (var reader = new StringReader(text)) using (var jsonReader = new JsonTextReader(reader)) { - var msg = _serializer.Deserialize(jsonReader); + var msg = _serializer.Deserialize(jsonReader); await _receivedRpcEvent.InvokeAsync(msg.Cmd, msg.Event, msg.Data).ConfigureAwait(false); if (msg.Nonce.IsSpecified && msg.Nonce.Value.HasValue) ProcessMessage(msg); @@ -219,7 +219,7 @@ namespace Discord.API { byte[] bytes = null; var guid = Guid.NewGuid(); - payload = new RpcMessage { Cmd = cmd, Event = evt, Args = payload, Nonce = guid }; + payload = new API.Rpc.RpcMessage { Cmd = cmd, Event = evt, Args = payload, Nonce = guid }; if (payload != null) { var json = SerializeJson(payload); @@ -338,7 +338,7 @@ namespace Discord.API return await SendRpcAsync("UNSUBSCRIBE", msg, evt: evt, options: options).ConfigureAwait(false); } - private bool ProcessMessage(RpcMessage msg) + private bool ProcessMessage(API.Rpc.RpcMessage msg) { RpcRequest requestTracker; if (_requests.TryGetValue(msg.Nonce.Value.Value, out requestTracker)) diff --git a/src/Discord.Net/Entities/Messages/Message.cs b/src/Discord.Net/Entities/Messages/Message.cs index aaf81aad2..df6bf7e2c 100644 --- a/src/Discord.Net/Entities/Messages/Message.cs +++ b/src/Discord.Net/Entities/Messages/Message.cs @@ -53,7 +53,6 @@ namespace Discord var guildChannel = Channel as GuildChannel; var guild = guildChannel?.Guild; - var discord = Discord; if (model.IsTextToSpeech.IsSpecified) IsTTS = model.IsTextToSpeech.Value; diff --git a/src/Discord.Net/Rpc/DiscordRpcClient.cs b/src/Discord.Net/Rpc/DiscordRpcClient.cs index 7cdbccfff..53886d41d 100644 --- a/src/Discord.Net/Rpc/DiscordRpcClient.cs +++ b/src/Discord.Net/Rpc/DiscordRpcClient.cs @@ -355,7 +355,7 @@ namespace Discord.Rpc { await _rpcLogger.DebugAsync("Received Dispatch (MESSAGE_CREATE)").ConfigureAwait(false); var data = (payload.Value as JToken).ToObject(_serializer); - var msg = new Message(null, new User(data.Message.Author.Value), data.Message); + var msg = new RpcMessage(this, data.Message); await _messageReceivedEvent.InvokeAsync(data.ChannelId, msg).ConfigureAwait(false); } @@ -364,7 +364,7 @@ namespace Discord.Rpc { await _rpcLogger.DebugAsync("Received Dispatch (MESSAGE_UPDATE)").ConfigureAwait(false); var data = (payload.Value as JToken).ToObject(_serializer); - var msg = new Message(null, new User(data.Message.Author.Value), data.Message); + var msg = new RpcMessage(this, data.Message); await _messageUpdatedEvent.InvokeAsync(data.ChannelId, msg).ConfigureAwait(false); } diff --git a/src/Discord.Net/Entities/Rpc/IRemoteUserGuild.cs b/src/Discord.Net/Rpc/Entities/IRemoteUserGuild.cs similarity index 51% rename from src/Discord.Net/Entities/Rpc/IRemoteUserGuild.cs rename to src/Discord.Net/Rpc/Entities/IRemoteUserGuild.cs index f1cdc8203..5f92edb9b 100644 --- a/src/Discord.Net/Entities/Rpc/IRemoteUserGuild.cs +++ b/src/Discord.Net/Rpc/Entities/IRemoteUserGuild.cs @@ -1,8 +1,8 @@ -namespace Discord.Entities.Rpc +namespace Discord.Rpc { - public interface IRemoteUserGuild : ISnowflakeEntity + /*public interface IRemoteUserGuild : ISnowflakeEntity { /// Gets the name of this guild. string Name { get; } - } + }*/ } diff --git a/src/Discord.Net/Entities/Rpc/RemoteUserGuild.cs b/src/Discord.Net/Rpc/Entities/RemoteUserGuild.cs similarity index 86% rename from src/Discord.Net/Entities/Rpc/RemoteUserGuild.cs rename to src/Discord.Net/Rpc/Entities/RemoteUserGuild.cs index bc2f441e4..e0337237a 100644 --- a/src/Discord.Net/Entities/Rpc/RemoteUserGuild.cs +++ b/src/Discord.Net/Rpc/Entities/RemoteUserGuild.cs @@ -2,9 +2,9 @@ using System; using Model = Discord.API.Rpc.RpcUserGuild; -namespace Discord.Entities.Rpc +namespace Discord.Rpc { - internal class RemoteUserGuild : IRemoteUserGuild, ISnowflakeEntity + /*internal class RemoteUserGuild : IRemoteUserGuild, ISnowflakeEntity { public ulong Id { get; } public DiscordRestClient Discord { get; } @@ -26,5 +26,5 @@ namespace Discord.Entities.Rpc } bool IEntity.IsAttached => false; - } + }*/ } diff --git a/src/Discord.Net/Rpc/Entities/RpcMessage.cs b/src/Discord.Net/Rpc/Entities/RpcMessage.cs new file mode 100644 index 000000000..86d67bfa4 --- /dev/null +++ b/src/Discord.Net/Rpc/Entities/RpcMessage.cs @@ -0,0 +1,15 @@ +using Discord.Rest; + +namespace Discord.Rpc +{ + internal class RpcMessage : Message + { + public override DiscordRestClient Discord { get; } + + public RpcMessage(DiscordRpcClient discord, API.Message model) + : base(null, model.Author.IsSpecified ? new User(model.Author.Value) : null, model) + { + Discord = discord; + } + } +} diff --git a/src/Discord.Net/Entities/WebSocket/Channels/ISocketChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/ISocketChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/ISocketChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/ISocketChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/ISocketGuildChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/ISocketGuildChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/ISocketGuildChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/ISocketGuildChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/ISocketMessageChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/ISocketMessageChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/ISocketMessageChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/ISocketMessageChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/ISocketPrivateChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/ISocketPrivateChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/ISocketPrivateChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/ISocketPrivateChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/MessageCache.cs b/src/Discord.Net/WebSocket/Entities/Channels/MessageCache.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/MessageCache.cs rename to src/Discord.Net/WebSocket/Entities/Channels/MessageCache.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/MessageManager.cs b/src/Discord.Net/WebSocket/Entities/Channels/MessageManager.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/MessageManager.cs rename to src/Discord.Net/WebSocket/Entities/Channels/MessageManager.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/SocketDMChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/SocketDMChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/SocketDMChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/SocketDMChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/SocketGroupChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/SocketGroupChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/SocketGroupChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/SocketGroupChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/SocketTextChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/SocketTextChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/SocketTextChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/SocketTextChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Channels/SocketVoiceChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/SocketVoiceChannel.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Channels/SocketVoiceChannel.cs rename to src/Discord.Net/WebSocket/Entities/Channels/SocketVoiceChannel.cs diff --git a/src/Discord.Net/Entities/WebSocket/Guilds/SocketGuild.cs b/src/Discord.Net/WebSocket/Entities/Guilds/SocketGuild.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Guilds/SocketGuild.cs rename to src/Discord.Net/WebSocket/Entities/Guilds/SocketGuild.cs diff --git a/src/Discord.Net/Entities/WebSocket/Messages/SocketMessage.cs b/src/Discord.Net/WebSocket/Entities/Messages/SocketMessage.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Messages/SocketMessage.cs rename to src/Discord.Net/WebSocket/Entities/Messages/SocketMessage.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/ISocketUser.cs b/src/Discord.Net/WebSocket/Entities/Users/ISocketUser.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/ISocketUser.cs rename to src/Discord.Net/WebSocket/Entities/Users/ISocketUser.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/Presence.cs b/src/Discord.Net/WebSocket/Entities/Users/Presence.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/Presence.cs rename to src/Discord.Net/WebSocket/Entities/Users/Presence.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/SocketDMUser.cs b/src/Discord.Net/WebSocket/Entities/Users/SocketDMUser.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/SocketDMUser.cs rename to src/Discord.Net/WebSocket/Entities/Users/SocketDMUser.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/SocketGlobalUser.cs b/src/Discord.Net/WebSocket/Entities/Users/SocketGlobalUser.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/SocketGlobalUser.cs rename to src/Discord.Net/WebSocket/Entities/Users/SocketGlobalUser.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/SocketGroupUser.cs b/src/Discord.Net/WebSocket/Entities/Users/SocketGroupUser.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/SocketGroupUser.cs rename to src/Discord.Net/WebSocket/Entities/Users/SocketGroupUser.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/SocketGuildUser.cs b/src/Discord.Net/WebSocket/Entities/Users/SocketGuildUser.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/SocketGuildUser.cs rename to src/Discord.Net/WebSocket/Entities/Users/SocketGuildUser.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/SocketSelfUser.cs b/src/Discord.Net/WebSocket/Entities/Users/SocketSelfUser.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/SocketSelfUser.cs rename to src/Discord.Net/WebSocket/Entities/Users/SocketSelfUser.cs diff --git a/src/Discord.Net/Entities/WebSocket/Users/VoiceState.cs b/src/Discord.Net/WebSocket/Entities/Users/VoiceState.cs similarity index 100% rename from src/Discord.Net/Entities/WebSocket/Users/VoiceState.cs rename to src/Discord.Net/WebSocket/Entities/Users/VoiceState.cs