Browse Source

Added nonce and a few API response adjustments

tags/docs-0.9
Brandon Smith 9 years ago
parent
commit
d43c25bd1e
5 changed files with 31 additions and 11 deletions
  1. +2
    -2
      src/Discord.Net/API/DiscordAPI.cs
  2. +2
    -0
      src/Discord.Net/API/Models/APIRequests.cs
  3. +10
    -5
      src/Discord.Net/API/Models/Common.cs
  4. +11
    -2
      src/Discord.Net/DiscordClient.cs
  5. +6
    -2
      src/Discord.Net/Server.cs

+ 2
- 2
src/Discord.Net/API/DiscordAPI.cs View File

@@ -73,9 +73,9 @@ namespace Discord.API
=> Http.Delete(Endpoints.Invite(id));
//Chat
public static Task<APIResponses.SendMessage> SendMessage(string channelId, string message, string[] mentions)
public static Task<APIResponses.SendMessage> SendMessage(string channelId, string message, string[] mentions, string nonce)
{
var request = new APIRequests.SendMessage { Content = message, Mentions = mentions };
var request = new APIRequests.SendMessage { Content = message, Mentions = mentions, Nonce = nonce };
return Http.Post<APIResponses.SendMessage>(Endpoints.ChannelMessages(channelId), request);
}
public static Task<APIResponses.EditMessage> EditMessage(string channelId, string messageId, string message, string[] mentions)


+ 2
- 0
src/Discord.Net/API/Models/APIRequests.cs View File

@@ -62,6 +62,8 @@ namespace Discord.API.Models
public string Content;
[JsonProperty(PropertyName = "mentions")]
public string[] Mentions;
[JsonProperty(PropertyName = "nonce")]
public string Nonce;
}
public class EditMessage : SendMessage { }



+ 10
- 5
src/Discord.Net/API/Models/Common.cs View File

@@ -60,6 +60,13 @@ namespace Discord.API.Models
[JsonProperty(PropertyName = "guild_id")]
public string ServerId;
}
internal class InitialMemberInfo : RoleMemberInfo
{
[JsonProperty(PropertyName = "mute")]
public bool IsMuted;
[JsonProperty(PropertyName = "deaf")]
public bool IsDeafened;
}
internal class PresenceMemberInfo : MemberInfo
{
[JsonProperty(PropertyName = "game_id")]
@@ -88,10 +95,6 @@ namespace Discord.API.Models
}
internal class RoleMemberInfo : MemberInfo
{
[JsonProperty(PropertyName = "mute")]
public bool IsMuted;
[JsonProperty(PropertyName = "deaf")]
public bool IsDeafened;
[JsonProperty(PropertyName = "joined_at")]
public DateTime? JoinedAt;
[JsonProperty(PropertyName = "roles")]
@@ -170,7 +173,7 @@ namespace Discord.API.Models
[JsonProperty(PropertyName = "channels")]
public ChannelInfo[] Channels;
[JsonProperty(PropertyName = "members")]
public RoleMemberInfo[] Members;
public InitialMemberInfo[] Members;
[JsonProperty(PropertyName = "presences")]
public PresenceMemberInfo[] Presences;
[JsonProperty(PropertyName = "voice_states")]
@@ -259,6 +262,8 @@ namespace Discord.API.Models
public string Content;
[JsonProperty(PropertyName = "author")]
public UserReference Author;
[JsonProperty(PropertyName = "nonce")]
public string Nonce;
}

//Roles


+ 11
- 2
src/Discord.Net/DiscordClient.cs View File

@@ -21,6 +21,7 @@ namespace Discord
private readonly Regex _userRegex, _channelRegex;
private readonly MatchEvaluator _userRegexEvaluator, _channelRegexEvaluator;
private readonly JsonSerializer _serializer;
private readonly Random _rand;

/// <summary> Returns the User object for the current logged in user. </summary>
public User User { get; private set; }
@@ -66,6 +67,7 @@ namespace Discord
/// <summary> Initializes a new instance of the DiscordClient class. </summary>
public DiscordClient()
{
_rand = new Random();
_isStopping = new ManualResetEventSlim(false);

_serializer = new JsonSerializer();
@@ -1004,7 +1006,8 @@ namespace Discord
if (text.Length <= 2000)
{
var msg = await DiscordAPI.SendMessage(channelId, text, mentions);
var nonce = GenerateNonce();
var msg = await DiscordAPI.SendMessage(channelId, text, mentions, nonce);
return new Message[] { _messages.Update(msg.Id, channelId, msg) };
}
else
@@ -1014,7 +1017,8 @@ namespace Discord
for (int i = 0; i < blockCount; i++)
{
int index = i * DiscordAPI.MaxMessageSize;
var msg = await DiscordAPI.SendMessage(channelId, text.Substring(index, Math.Min(2000, text.Length - index)), mentions);
var nonce = GenerateNonce();
var msg = await DiscordAPI.SendMessage(channelId, text.Substring(index, Math.Min(2000, text.Length - index)), mentions, nonce);
result[i] = _messages.Update(msg.Id, channelId, msg);
await Task.Delay(1000);
}
@@ -1185,6 +1189,11 @@ namespace Discord
text = _channelRegex.Replace(text, _channelRegexEvaluator);
return text;
}
private string GenerateNonce()
{
lock (_rand)
return _rand.Next(0, int.MaxValue).ToString();
}

/// <summary> Blocking call that will not return until client has been stopped. This is mainly intended for use in console applications. </summary>
public void Block()


+ 6
- 2
src/Discord.Net/Server.cs View File

@@ -85,12 +85,16 @@ namespace Discord
if (model is API.Models.RoleMemberInfo)
{
var extendedModel = model as API.Models.RoleMemberInfo;
member.IsDeafened = extendedModel.IsDeafened;
member.IsMuted = extendedModel.IsMuted;
member.RoleIds = extendedModel.Roles;
if (extendedModel.JoinedAt.HasValue)
member.JoinedAt = extendedModel.JoinedAt.Value;
}
if (model is API.Models.InitialMemberInfo)
{
var extendedModel = model as API.Models.InitialMemberInfo;
member.IsDeafened = extendedModel.IsDeafened;
member.IsMuted = extendedModel.IsMuted;
}
}
);
}


Loading…
Cancel
Save