Moved Rpc/WebSocket entities, fixed nullref on RPC message events
This commit is contained in:
@@ -90,7 +90,7 @@ namespace Discord.API
|
|||||||
using (var reader = new StreamReader(decompressed))
|
using (var reader = new StreamReader(decompressed))
|
||||||
using (var jsonReader = new JsonTextReader(reader))
|
using (var jsonReader = new JsonTextReader(reader))
|
||||||
{
|
{
|
||||||
var msg = _serializer.Deserialize<RpcMessage>(jsonReader);
|
var msg = _serializer.Deserialize<API.Rpc.RpcMessage>(jsonReader);
|
||||||
await _receivedRpcEvent.InvokeAsync(msg.Cmd, msg.Event, msg.Data).ConfigureAwait(false);
|
await _receivedRpcEvent.InvokeAsync(msg.Cmd, msg.Event, msg.Data).ConfigureAwait(false);
|
||||||
if (msg.Nonce.IsSpecified && msg.Nonce.Value.HasValue)
|
if (msg.Nonce.IsSpecified && msg.Nonce.Value.HasValue)
|
||||||
ProcessMessage(msg);
|
ProcessMessage(msg);
|
||||||
@@ -102,7 +102,7 @@ namespace Discord.API
|
|||||||
using (var reader = new StringReader(text))
|
using (var reader = new StringReader(text))
|
||||||
using (var jsonReader = new JsonTextReader(reader))
|
using (var jsonReader = new JsonTextReader(reader))
|
||||||
{
|
{
|
||||||
var msg = _serializer.Deserialize<RpcMessage>(jsonReader);
|
var msg = _serializer.Deserialize<API.Rpc.RpcMessage>(jsonReader);
|
||||||
await _receivedRpcEvent.InvokeAsync(msg.Cmd, msg.Event, msg.Data).ConfigureAwait(false);
|
await _receivedRpcEvent.InvokeAsync(msg.Cmd, msg.Event, msg.Data).ConfigureAwait(false);
|
||||||
if (msg.Nonce.IsSpecified && msg.Nonce.Value.HasValue)
|
if (msg.Nonce.IsSpecified && msg.Nonce.Value.HasValue)
|
||||||
ProcessMessage(msg);
|
ProcessMessage(msg);
|
||||||
@@ -219,7 +219,7 @@ namespace Discord.API
|
|||||||
{
|
{
|
||||||
byte[] bytes = null;
|
byte[] bytes = null;
|
||||||
var guid = Guid.NewGuid();
|
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)
|
if (payload != null)
|
||||||
{
|
{
|
||||||
var json = SerializeJson(payload);
|
var json = SerializeJson(payload);
|
||||||
@@ -338,7 +338,7 @@ namespace Discord.API
|
|||||||
return await SendRpcAsync<SubscriptionResponse>("UNSUBSCRIBE", msg, evt: evt, options: options).ConfigureAwait(false);
|
return await SendRpcAsync<SubscriptionResponse>("UNSUBSCRIBE", msg, evt: evt, options: options).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ProcessMessage(RpcMessage msg)
|
private bool ProcessMessage(API.Rpc.RpcMessage msg)
|
||||||
{
|
{
|
||||||
RpcRequest requestTracker;
|
RpcRequest requestTracker;
|
||||||
if (_requests.TryGetValue(msg.Nonce.Value.Value, out requestTracker))
|
if (_requests.TryGetValue(msg.Nonce.Value.Value, out requestTracker))
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ namespace Discord
|
|||||||
|
|
||||||
var guildChannel = Channel as GuildChannel;
|
var guildChannel = Channel as GuildChannel;
|
||||||
var guild = guildChannel?.Guild;
|
var guild = guildChannel?.Guild;
|
||||||
var discord = Discord;
|
|
||||||
|
|
||||||
if (model.IsTextToSpeech.IsSpecified)
|
if (model.IsTextToSpeech.IsSpecified)
|
||||||
IsTTS = model.IsTextToSpeech.Value;
|
IsTTS = model.IsTextToSpeech.Value;
|
||||||
|
|||||||
@@ -355,7 +355,7 @@ namespace Discord.Rpc
|
|||||||
{
|
{
|
||||||
await _rpcLogger.DebugAsync("Received Dispatch (MESSAGE_CREATE)").ConfigureAwait(false);
|
await _rpcLogger.DebugAsync("Received Dispatch (MESSAGE_CREATE)").ConfigureAwait(false);
|
||||||
var data = (payload.Value as JToken).ToObject<MessageEvent>(_serializer);
|
var data = (payload.Value as JToken).ToObject<MessageEvent>(_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);
|
await _messageReceivedEvent.InvokeAsync(data.ChannelId, msg).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
@@ -364,7 +364,7 @@ namespace Discord.Rpc
|
|||||||
{
|
{
|
||||||
await _rpcLogger.DebugAsync("Received Dispatch (MESSAGE_UPDATE)").ConfigureAwait(false);
|
await _rpcLogger.DebugAsync("Received Dispatch (MESSAGE_UPDATE)").ConfigureAwait(false);
|
||||||
var data = (payload.Value as JToken).ToObject<MessageEvent>(_serializer);
|
var data = (payload.Value as JToken).ToObject<MessageEvent>(_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);
|
await _messageUpdatedEvent.InvokeAsync(data.ChannelId, msg).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
namespace Discord.Entities.Rpc
|
namespace Discord.Rpc
|
||||||
{
|
{
|
||||||
public interface IRemoteUserGuild : ISnowflakeEntity
|
/*public interface IRemoteUserGuild : ISnowflakeEntity
|
||||||
{
|
{
|
||||||
/// <summary> Gets the name of this guild. </summary>
|
/// <summary> Gets the name of this guild. </summary>
|
||||||
string Name { get; }
|
string Name { get; }
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
using System;
|
using System;
|
||||||
using Model = Discord.API.Rpc.RpcUserGuild;
|
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 ulong Id { get; }
|
||||||
public DiscordRestClient Discord { get; }
|
public DiscordRestClient Discord { get; }
|
||||||
@@ -26,5 +26,5 @@ namespace Discord.Entities.Rpc
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool IEntity<ulong>.IsAttached => false;
|
bool IEntity<ulong>.IsAttached => false;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
15
src/Discord.Net/Rpc/Entities/RpcMessage.cs
Normal file
15
src/Discord.Net/Rpc/Entities/RpcMessage.cs
Normal file
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user