Browse Source

Added reference project

tags/docs-0.9
RogueException 9 years ago
parent
commit
36ea8b8c3a
68 changed files with 1515 additions and 0 deletions
  1. +21
    -0
      ref/Discord.Net.xproj
  2. +32
    -0
      ref/DiscordClient.Events.cs
  3. +59
    -0
      ref/DiscordClient.cs
  4. +36
    -0
      ref/DiscordConfig.cs
  5. +22
    -0
      ref/Entities/Channels/Channel.cs
  6. +17
    -0
      ref/Entities/Channels/IChannel.cs
  7. +1
    -0
      ref/Entities/Channels/IPrivateChannel.cs
  8. +30
    -0
      ref/Entities/Channels/IPublicChannel.cs
  9. +18
    -0
      ref/Entities/Channels/ITextChannel.cs
  10. +7
    -0
      ref/Entities/Channels/IVoiceChannel.cs
  11. +31
    -0
      ref/Entities/Channels/PrivateChannel.cs
  12. +50
    -0
      ref/Entities/Channels/TextChannel.cs
  13. +49
    -0
      ref/Entities/Channels/VoiceChannel.cs
  14. +17
    -0
      ref/Entities/Color.cs
  15. +7
    -0
      ref/Entities/IMentionable.cs
  16. +13
    -0
      ref/Entities/IModel.cs
  17. +48
    -0
      ref/Entities/Invite.cs
  18. +68
    -0
      ref/Entities/Message.cs
  19. +54
    -0
      ref/Entities/Permissions/ChannelPermissions.cs
  20. +9
    -0
      ref/Entities/Permissions/PermissionOverwrite.cs
  21. +55
    -0
      ref/Entities/Permissions/ServerPermissions.cs
  22. +50
    -0
      ref/Entities/Permissions/TriStateChannelPermissions.cs
  23. +23
    -0
      ref/Entities/Profile.cs
  24. +20
    -0
      ref/Entities/Region.cs
  25. +29
    -0
      ref/Entities/Role.cs
  26. +70
    -0
      ref/Entities/Server.cs
  27. +55
    -0
      ref/Entities/User.cs
  28. +8
    -0
      ref/Enums/ChannelType.cs
  29. +10
    -0
      ref/Enums/ConnectionState.cs
  30. +9
    -0
      ref/Enums/ImageType.cs
  31. +11
    -0
      ref/Enums/LogSeverity.cs
  32. +18
    -0
      ref/Enums/MessageState.cs
  33. +9
    -0
      ref/Enums/PermValue.cs
  34. +31
    -0
      ref/Enums/PermissionBits.cs
  35. +8
    -0
      ref/Enums/PermissionTarget.cs
  36. +8
    -0
      ref/Enums/Relative.cs
  37. +9
    -0
      ref/Enums/UserStatus.cs
  38. +10
    -0
      ref/Events/ChannelEventArgs.cs
  39. +11
    -0
      ref/Events/ChannelUpdatedEventArgs.cs
  40. +8
    -0
      ref/Events/ChannelUserEventArgs.cs
  41. +10
    -0
      ref/Events/DisconnectedEventArgs.cs
  42. +12
    -0
      ref/Events/LogMessageEventArgs.cs
  43. +12
    -0
      ref/Events/MessageEventArgs.cs
  44. +13
    -0
      ref/Events/MessageUpdatedEventArgs.cs
  45. +10
    -0
      ref/Events/ProfileUpdatedEventArgs.cs
  46. +10
    -0
      ref/Events/RoleEventArgs.cs
  47. +11
    -0
      ref/Events/RoleUpdatedEventArgs.cs
  48. +9
    -0
      ref/Events/ServerEventArgs.cs
  49. +10
    -0
      ref/Events/ServerUpdatedEventArgs.cs
  50. +9
    -0
      ref/Events/UserEventArgs.cs
  51. +10
    -0
      ref/Events/UserUpdatedEventArgs.cs
  52. +14
    -0
      ref/Format.cs
  53. +30
    -0
      ref/ILogger.cs
  54. +9
    -0
      ref/MessageQueue.cs
  55. +16
    -0
      ref/Net/HttpException.cs
  56. +17
    -0
      ref/Net/Rest/CompletedRequestEventArgs.cs
  57. +23
    -0
      ref/Net/Rest/IRestRequest.cs
  58. +12
    -0
      ref/Net/Rest/RequestEventArgs.cs
  59. +25
    -0
      ref/Net/Rest/RestClient.cs
  60. +9
    -0
      ref/Net/TimeoutException.cs
  61. +12
    -0
      ref/Net/WebSocketException.cs
  62. +11
    -0
      ref/Net/WebSockets/BinaryMessageEventArgs.cs
  63. +31
    -0
      ref/Net/WebSockets/GatewaySocket.cs
  64. +18
    -0
      ref/Net/WebSockets/IWebSocketEngine.cs
  65. +11
    -0
      ref/Net/WebSockets/TextMessageEventArgs.cs
  66. +22
    -0
      ref/Net/WebSockets/WebSocket.cs
  67. +17
    -0
      ref/Net/WebSockets/WebSocketEventEventArgs.cs
  68. +81
    -0
      ref/project.json

+ 21
- 0
ref/Discord.Net.xproj View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>5b2afee6-fff6-4ba2-be12-61b283b72ac0</ProjectGuid>
<RootNamespace>Discord</RootNamespace>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<ProduceOutputsOnBuild>True</ProduceOutputsOnBuild>
</PropertyGroup>
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
</Project>

+ 32
- 0
ref/DiscordClient.Events.cs View File

@@ -0,0 +1,32 @@
using System;

namespace Discord
{
public partial class DiscordClient
{
public event EventHandler Ready = delegate { };
public event EventHandler<ChannelEventArgs> ChannelCreated = delegate { };
public event EventHandler<ChannelEventArgs> ChannelDestroyed = delegate { };
public event EventHandler<ChannelUpdatedEventArgs> ChannelUpdated = delegate { };
public event EventHandler<MessageEventArgs> MessageAcknowledged = delegate { };
public event EventHandler<MessageEventArgs> MessageDeleted = delegate { };
public event EventHandler<MessageEventArgs> MessageReceived = delegate { };
public event EventHandler<MessageEventArgs> MessageSent = delegate { };
public event EventHandler<MessageUpdatedEventArgs> MessageUpdated = delegate { };
public event EventHandler<ProfileUpdatedEventArgs> ProfileUpdated = delegate { };
public event EventHandler<RoleEventArgs> RoleCreated = delegate { };
public event EventHandler<RoleUpdatedEventArgs> RoleUpdated = delegate { };
public event EventHandler<RoleEventArgs> RoleDeleted = delegate { };
public event EventHandler<ServerEventArgs> JoinedServer = delegate { };
public event EventHandler<ServerEventArgs> LeftServer = delegate { };
public event EventHandler<ServerEventArgs> ServerAvailable = delegate { };
public event EventHandler<ServerUpdatedEventArgs> ServerUpdated = delegate { };
public event EventHandler<ServerEventArgs> ServerUnavailable = delegate { };
public event EventHandler<UserEventArgs> UserBanned = delegate { };
public event EventHandler<ChannelUserEventArgs> UserIsTyping = delegate { };
public event EventHandler<UserEventArgs> UserJoined = delegate { };
public event EventHandler<UserEventArgs> UserLeft = delegate { };
public event EventHandler<UserUpdatedEventArgs> UserUpdated = delegate { };
public event EventHandler<UserEventArgs> UserUnbanned = delegate { };
}
}

+ 59
- 0
ref/DiscordClient.cs View File

@@ -0,0 +1,59 @@
using Discord.Net;
using Discord.Net.Rest;
using Discord.Net.WebSockets;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading;
using System.Threading.Tasks;

namespace Discord
{
/// <summary> Provides a connection to the DiscordApp service. </summary>
public partial class DiscordClient : IDisposable
{
public DiscordConfig Config { get; }
public RestClient ClientAPI { get; }
public RestClient StatusAPI { get; }
public GatewaySocket GatewaySocket { get; }
public MessageQueue MessageQueue { get; }
public JsonSerializer Serializer { get; }
public ConnectionState State { get; }
public CancellationToken CancelToken { get; }
public Profile CurrentUser { get; }
public string SessionId { get; }
public UserStatus Status { get; }
public string CurrentGame { get; }
public IEnumerable<Server> Servers { get; }
public IEnumerable<Channel> PrivateChannels { get; }
public IEnumerable<Region> Regions { get; }

public DiscordClient() { }
public DiscordClient(DiscordConfig config) { }
public DiscordClient(Action<DiscordConfig> configFunc) { }

public Task<string> Connect(string email, string password, string token = null) => null;
public Task Connect(string token) => null;
public Task Disconnect() => null;

public void SetStatus(UserStatus status) { }
public void SetGame(string game) { }

public Channel GetChannel(ulong id) => null;
public Task<Channel> CreatePrivateChannel(ulong userId) => null;

public Task<Invite> GetInvite(string inviteIdOrXkcd) => null;

public Region GetRegion(string id) => null;

public Server GetServer(ulong id) => null;
public IEnumerable<Server> FindServers(string name) => null;
public Task<Server> CreateServer(string name, Region region, ImageType iconType = ImageType.None, Stream icon = null) => null;

public void Dispose() { }
}
}

+ 36
- 0
ref/DiscordConfig.cs View File

@@ -0,0 +1,36 @@
using System;

namespace Discord
{
public class DiscordConfig
{
public const int MaxMessageSize = 2000;
public const string LibName = "Discord.Net";
public static readonly string LibVersion = null;
public const string LibUrl = "https://github.com/RogueException/Discord.Net";

public const string ClientAPIUrl = "https://discordapp.com/api/";
public const string StatusAPIUrl = "https://srhpyqt94yxb.statuspage.io/api/v2/"; //"https://status.discordapp.com/api/v2/";
public const string CDNUrl = "https://cdn.discordapp.com/";
public const string InviteUrl = "https://discord.gg/";

public string AppName { get; set; } = null;
public string AppUrl { get; set; } = null;
public string AppVersion { get; set; } = null;
public LogSeverity LogLevel { get; set; } = LogSeverity.Info;
public int ConnectionTimeout { get; set; } = 30000;
public int ReconnectDelay { get; set; } = 1000;
public int FailedReconnectDelay { get; set; } = 15000;
public bool CacheToken { get; set; } = true;
public int MessageCacheSize { get; set; } = 100;

public bool UsePermissionsCache { get; set; } = true;
public bool EnablePreUpdateEvents { get; set; } = true;
public int LargeThreshold { get; set; } = 250;
public EventHandler<LogMessageEventArgs> LogHandler { get; set; }
public string UserAgent { get; }
}
}

+ 22
- 0
ref/Entities/Channels/Channel.cs View File

@@ -0,0 +1,22 @@
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Discord
{
public abstract class Channel : IChannel
{
public ulong Id { get; }

public abstract DiscordClient Client { get; }
public abstract ChannelType Type { get; }
public bool IsText { get; }
public bool IsVoice { get; }
public bool IsPrivate { get; }
public bool IsPublic { get; }

public abstract User CurrentUser { get; }
public abstract IEnumerable<User> Users { get; }

public abstract Task Save();
}
}

+ 17
- 0
ref/Entities/Channels/IChannel.cs View File

@@ -0,0 +1,17 @@
using System.Collections.Generic;

namespace Discord
{
public interface IChannel : IModel<ulong>
{
DiscordClient Client { get; }
ChannelType Type { get; }
bool IsText { get; }
bool IsVoice { get; }
bool IsPrivate { get; }
bool IsPublic { get; }
IEnumerable<User> Users { get; }
}
}

src/Discord.Net/Models/IPrivateChannel.cs → ref/Entities/Channels/IPrivateChannel.cs View File

@@ -2,5 +2,6 @@
{
public interface IPrivateChannel : IChannel
{
User Recipient { get; }
}
}

+ 30
- 0
ref/Entities/Channels/IPublicChannel.cs View File

@@ -0,0 +1,30 @@
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Discord
{
public interface IPublicChannel : IChannel
{
Server Server { get; }

string Name { get; set; }
int Position { get; set; }
IEnumerable<PermissionOverwrite> PermissionOverwrites { get; }

PermissionOverwrite? GetPermissionsRule(User user);
PermissionOverwrite? GetPermissionsRule(Role role);
Task<IEnumerable<Invite>> DownloadInvites();

Task Delete();

Task<Invite> CreateInvite(int? maxAge = 1800, int? maxUses = null, bool tempMembership = false, bool withXkcd = false);

Task AddPermissionsRule(User user, ChannelPermissions allow, ChannelPermissions deny);
Task AddPermissionsRule(User user, TriStateChannelPermissions permissions);
Task AddPermissionsRule(Role role, ChannelPermissions allow, ChannelPermissions deny);
Task AddPermissionsRule(Role role, TriStateChannelPermissions permissions);
Task RemovePermissionsRule(User user);
Task RemovePermissionsRule(Role role);
}
}

+ 18
- 0
ref/Entities/Channels/ITextChannel.cs View File

@@ -0,0 +1,18 @@
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace Discord
{
public interface ITextChannel : IChannel
{
Message GetMessage(ulong id);
Task<IEnumerable<Message>> DownloadMessages(int limit = 100, ulong? relativeMessageId = null, Relative relativeDir = Relative.Before);

Task<Message> SendMessage(string text, bool isTTS = false);
Task<Message> SendFile(string filePath, string text = null, bool isTTS = false);
Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false);

Task SendIsTyping();
}
}

+ 7
- 0
ref/Entities/Channels/IVoiceChannel.cs View File

@@ -0,0 +1,7 @@
namespace Discord
{
public interface IVoiceChannel : IChannel
{
int Bitrate { get; set; }
}
}

+ 31
- 0
ref/Entities/Channels/PrivateChannel.cs View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace Discord
{
public class PrivateChannel : Channel, ITextChannel, IPrivateChannel
{
public User Recipient { get; }
public IEnumerable<Message> Messages { get; }

public override DiscordClient Client => null;
public override ChannelType Type => default(ChannelType);

public override User CurrentUser => null;
public override IEnumerable<User> Users => null;

public Message GetMessage(ulong id) => null;
public Task<IEnumerable<Message>> DownloadMessages(int limit) => null;
public Task<IEnumerable<Message>> DownloadMessages(int limit, ulong? relativeMessageId, Relative relativeDir) => null;

public Task<Message> SendMessage(string text, bool isTTS = false) => null;
public Task<Message> SendFile(string path, string text = null, bool isTTS = false) => null;
public Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false) => null;

public Task SendIsTyping() => null;

public override Task Save() => null;
}
}

+ 50
- 0
ref/Entities/Channels/TextChannel.cs View File

@@ -0,0 +1,50 @@
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace Discord
{
public class TextChannel : Channel, ITextChannel, IPublicChannel, IMentionable
{
public Server Server { get; }
public string Mention { get; }
public IEnumerable<PermissionOverwrite> PermissionOverwrites { get; }
public IEnumerable<Message> Messages { get; }

public string Topic { get; set; }
public bool IsTyping { get; set; }
public string Name { get; set; }
public int Position { get; set; }

public override DiscordClient Client => null;
public override ChannelType Type => default(ChannelType);
public override User CurrentUser => null;
public override IEnumerable<User> Users => null;

public Message GetMessage(ulong id) => null;
public PermissionOverwrite? GetPermissionsRule(User user) => null;
public PermissionOverwrite? GetPermissionsRule(Role role) => null;

public Task<IEnumerable<Message>> DownloadMessages(int limit) => null;
public Task<IEnumerable<Message>> DownloadMessages(int limit, ulong? relativeMessageId, Relative relativeDir) => null;
public Task<IEnumerable<Invite>> DownloadInvites() => null;

public Task<Message> SendMessage(string text, bool isTTS = false) => null;
public Task<Message> SendFile(string path, string text = null, bool isTTS = false) => null;
public Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false) => null;

public Task SendIsTyping() => null;

public Task<Invite> CreateInvite(int? maxAge = 1800, int? maxUses = default(int?), bool tempMembership = false, bool withXkcd = false) => null;

public Task AddPermissionsRule(User user, ChannelPermissions allow, ChannelPermissions deny) => null;
public Task AddPermissionsRule(User user, TriStateChannelPermissions permissions) => null;
public Task AddPermissionsRule(Role role, ChannelPermissions allow, ChannelPermissions deny) => null;
public Task AddPermissionsRule(Role role, TriStateChannelPermissions permissions) => null;
public Task RemovePermissionsRule(User user) => null;
public Task RemovePermissionsRule(Role role) => null;

public Task Delete() => null;
public override Task Save() => null;
}
}

+ 49
- 0
ref/Entities/Channels/VoiceChannel.cs View File

@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace Discord
{
public class VoiceChannel : IPublicChannel, IVoiceChannel
{
public ulong Id { get; }
public DiscordClient Client { get; }
public Server Server { get; }
public ChannelType Type { get; }
public bool IsText { get; }
public bool IsVoice { get; }
public bool IsPrivate { get; }
public bool IsPublic { get; }
public IEnumerable<PermissionOverwrite> PermissionOverwrites { get; }
public IEnumerable<User> Users { get; }

public string Name { get; set; }
public int Position { get; set; }
public int Bitrate { get; set; }

public Message GetMessage(ulong id) => null;
public PermissionOverwrite? GetPermissionsRule(User user) => null;
public PermissionOverwrite? GetPermissionsRule(Role role) => null;

public Task<IEnumerable<Message>> DownloadMessages(int limit) => null;
public Task<IEnumerable<Message>> DownloadMessages(int limit, ulong? relativeMessageId, Relative relativeDir) => null;
public Task<IEnumerable<Invite>> DownloadInvites() => null;

public Task<Message> SendMessage(string text, bool isTTS = false) => null;
public Task<Message> SendFile(string path, string text = null, bool isTTS = false) => null;
public Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false) => null;

public Task<Invite> CreateInvite(int? maxAge = 1800, int? maxUses = default(int?), bool tempMembership = false, bool withXkcd = false) => null;

public Task AddPermissionsRule(User user, ChannelPermissions allow, ChannelPermissions deny) => null;
public Task AddPermissionsRule(User user, TriStateChannelPermissions permissions) => null;
public Task AddPermissionsRule(Role role, ChannelPermissions allow, ChannelPermissions deny) => null;
public Task AddPermissionsRule(Role role, TriStateChannelPermissions permissions) => null;
public Task RemovePermissionsRule(User user) => null;
public Task RemovePermissionsRule(Role role) => null;

public Task Delete() => null;
public Task Save() => null;
}
}

+ 17
- 0
ref/Entities/Color.cs View File

@@ -0,0 +1,17 @@
namespace Discord
{
public class Color
{
public static readonly Color Default = new Color(0);
public uint RawValue { get; }
public Color(uint rawValue) { }
public Color(byte r, byte g, byte b) { }
public Color(float r, float g, float b) { }
public byte R { get; }
public byte G { get; }
public byte B { get; }
}
}

+ 7
- 0
ref/Entities/IMentionable.cs View File

@@ -0,0 +1,7 @@
namespace Discord
{
public interface IMentionable
{
string Mention { get; }
}
}

+ 13
- 0
ref/Entities/IModel.cs View File

@@ -0,0 +1,13 @@
using System.Threading.Tasks;

namespace Discord
{
public interface IModel<TId> : IModel
{
TId Id { get; }
}
public interface IModel
{
Task Save();
}
}

+ 48
- 0
ref/Entities/Invite.cs View File

@@ -0,0 +1,48 @@
using System;
using System.Threading.Tasks;

namespace Discord
{
public class Invite : IModel<string>
{
public class ServerInfo
{
public ulong Id { get; }
public string Name { get; }
}
public class ChannelInfo
{
public ulong Id { get; }
public string Name { get; }
}
public class InviterInfo
{
public ulong Id { get; }
public string Name { get; }
public ushort Discriminator { get; }
public string AvatarId { get; }
public string AvatarUrl { get; }
}
public DiscordClient Client { get; }

string IModel<string>.Id => Code;
public string Code { get; }
public string XkcdCode { get; }
public ServerInfo Server { get; }
public ChannelInfo Channel { get; }
public int? MaxAge { get; }
public int Uses { get; }
public int? MaxUses { get; }
public bool IsRevoked { get; }
public bool IsTemporary { get; }
public DateTime CreatedAt { get; }
public string Url { get; }

public Task Delete() => null;
public Task Accept() => null;

public Task Save() => null;
}
}

+ 68
- 0
ref/Entities/Message.cs View File

@@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Discord
{
public class Message : IModel<ulong>
{
public class Attachment : File
{
public string Id { get; }
public int Size { get; }
public string Filename { get; }
}

public class Embed
{
public string Url { get; }
public string Type { get; }
public string Title { get; }
public string Description { get; }
public EmbedLink Author { get; }
public EmbedLink Provider { get; }
public File Thumbnail { get; }
public File Video { get; }
}

public class EmbedLink
{
public string Url { get; }
public string Name { get; }
}

public class File
{
public string Url { get; }
public string ProxyUrl { get; }
public int? Width { get; }
public int? Height { get; }
}

public DiscordClient Client { get; }
public ulong Id { get; }
public ITextChannel Channel { get; }
public User User { get; }
public bool IsTTS { get; }
public MessageState State { get; }
public string RawText { get; }
public string Text { get; }
public DateTime Timestamp { get; }
public DateTime? EditedTimestamp { get; }
public Attachment[] Attachments { get; }
public Embed[] Embeds { get; }
public IEnumerable<User> MentionedUsers { get; }
public IEnumerable<IPublicChannel> MentionedChannels { get; }
public IEnumerable<Role> MentionedRoles { get; }
public Server Server => null;
public bool IsAuthor => false;
public Task Delete() => null;

public Task Save() => null;

public bool IsMentioningMe(bool includeRoles = false) => false;
}
}

+ 54
- 0
ref/Entities/Permissions/ChannelPermissions.cs View File

@@ -0,0 +1,54 @@
namespace Discord
{
public struct ChannelPermissions
{
public static ChannelPermissions None { get; }
public static ChannelPermissions TextOnly { get; }
public static ChannelPermissions PrivateOnly { get; }
public static ChannelPermissions VoiceOnly { get; }
public static ChannelPermissions All(Channel channel) => default(ChannelPermissions);
public static ChannelPermissions All(ChannelType channelType, bool isPrivate) => default(ChannelPermissions);

public uint RawValue { get; }

public bool CreateInstantInvit { get; }
public bool ManagePermission { get; }
public bool ManageChannel { get; }

public bool ReadMessages { get; }
public bool SendMessages { get; }
public bool SendTTSMessages { get; }
public bool ManageMessages { get; }
public bool EmbedLinks { get; }
public bool AttachFiles { get; }
public bool ReadMessageHistory { get; }
public bool MentionEveryone { get; }

public bool Connect { get; }
public bool Speak { get; }
public bool MuteMembers { get; }
public bool DeafenMembers { get; }
public bool MoveMembers { get; }
public bool UseVoiceActivation { get; }

public ChannelPermissions(bool? createInstantInvite = null, bool? managePermissions = null,
bool? manageChannel = null, bool? readMessages = null, bool? sendMessages = null, bool? sendTTSMessages = null,
bool? manageMessages = null, bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null,
bool? mentionEveryone = null, bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null,
bool? moveMembers = null, bool? useVoiceActivation = null)
: this()
{
}
public ChannelPermissions(uint rawValue)
: this()
{
}

public ChannelPermissions Modify(ChannelPermissions basePerms, bool? createInstantInvite = null, bool? managePermissions = null,
bool? manageChannel = null, bool? readMessages = null, bool? sendMessages = null, bool? sendTTSMessages = null,
bool? manageMessages = null, bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null,
bool? mentionEveryone = null, bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null,
bool? moveMembers = null, bool? useVoiceActivation = null)
=> default(ChannelPermissions);
}
}

+ 9
- 0
ref/Entities/Permissions/PermissionOverwrite.cs View File

@@ -0,0 +1,9 @@
namespace Discord
{
public struct PermissionOverwrite
{
public PermissionTarget TargetType { get; }
public ulong TargetId { get; }
public TriStateChannelPermissions Permissions { get; }
}
}

+ 55
- 0
ref/Entities/Permissions/ServerPermissions.cs View File

@@ -0,0 +1,55 @@
namespace Discord
{
public struct ServerPermissions
{
public static ServerPermissions None { get; }
public static ServerPermissions All { get; }

public uint RawValue { get; }

public bool CreateInstantInvite { get; }
public bool BanMembers { get; }
public bool KickMembers { get; }
public bool ManageRoles { get; }
public bool ManageChannels { get; }
public bool ManageServer { get; }

public bool ReadMessages { get; }
public bool SendMessages { get; }
public bool SendTTSMessages { get; }
public bool ManageMessages { get; }
public bool EmbedLinks { get; }
public bool AttachFiles { get; }
public bool ReadMessageHistory { get; }
public bool MentionEveryone { get; }

public bool Connect { get; }
public bool Speak { get; }
public bool MuteMembers { get; }
public bool DeafenMembers { get; }
public bool MoveMembers { get; }
public bool UseVoiceActivation { get; }

public ServerPermissions(bool? createInstantInvite = null, bool? manageRoles = null,
bool? kickMembers = null, bool? banMembers = null, bool? manageChannel = null, bool? manageServer = null,
bool? readMessages = null, bool? sendMessages = null, bool? sendTTSMessages = null, bool? manageMessages = null,
bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null, bool? mentionEveryone = null,
bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null,
bool? moveMembers = null, bool? useVoiceActivation = null)
: this()
{
}
public ServerPermissions(uint rawValue)
: this()
{
}

public ServerPermissions Modify(ServerPermissions basePerms, bool? createInstantInvite = null, bool? manageRoles = null,
bool? kickMembers = null, bool? banMembers = null, bool? manageChannel = null, bool? manageServer = null,
bool? readMessages = null, bool? sendMessages = null, bool? sendTTSMessages = null, bool? manageMessages = null,
bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null, bool? mentionEveryone = null,
bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null,
bool? moveMembers = null, bool? useVoiceActivation = null)
=> default(ServerPermissions);
}
}

+ 50
- 0
ref/Entities/Permissions/TriStateChannelPermissions.cs View File

@@ -0,0 +1,50 @@
namespace Discord
{
public struct TriStateChannelPermissions
{
public static TriStateChannelPermissions InheritAll { get; }

public uint AllowValue { get; }
public uint DenyValue { get; }
public PermValue CreateInstantInvite { get; }
public PermValue ManagePermissions { get; }
public PermValue ManageChannel { get; }
public PermValue ReadMessages { get; }
public PermValue SendMessages { get; }
public PermValue SendTTSMessages { get; }
public PermValue ManageMessages { get; }
public PermValue EmbedLinks { get; }
public PermValue AttachFiles { get; }
public PermValue ReadMessageHistory { get; }
public PermValue MentionEveryone { get; }

public PermValue Connect { get; }
public PermValue Speak { get; }
public PermValue MuteMembers { get; }
public PermValue DeafenMembers { get; }
public PermValue MoveMembers { get; }
public PermValue UseVoiceActivation { get; }

public TriStateChannelPermissions(PermValue? createInstantInvite = null, PermValue? managePermissions = null,
PermValue? manageChannel = null, PermValue? readMessages = null, PermValue? sendMessages = null, PermValue? sendTTSMessages = null,
PermValue? manageMessages = null, PermValue? embedLinks = null, PermValue? attachFiles = null, PermValue? readMessageHistory = null,
PermValue? mentionEveryone = null, PermValue? connect = null, PermValue? speak = null, PermValue? muteMembers = null, PermValue? deafenMembers = null,
PermValue? moveMembers = null, PermValue? useVoiceActivation = null)
: this()
{
}

public TriStateChannelPermissions(uint allow = 0, uint deny = 0)
: this()
{
}

public TriStateChannelPermissions Modify(PermValue? createInstantInvite = null, PermValue? managePermissions = null,
PermValue? manageChannel = null, PermValue? readMessages = null, PermValue? sendMessages = null, PermValue? sendTTSMessages = null,
PermValue? manageMessages = null, PermValue? embedLinks = null, PermValue? attachFiles = null, PermValue? readMessageHistory = null,
PermValue? mentionEveryone = null, PermValue? connect = null, PermValue? speak = null, PermValue? muteMembers = null, PermValue? deafenMembers = null,
PermValue? moveMembers = null, PermValue? useVoiceActivation = null)
=> default(TriStateChannelPermissions);
}
}

+ 23
- 0
ref/Entities/Profile.cs View File

@@ -0,0 +1,23 @@
using System.Threading.Tasks;

namespace Discord
{
public class Profile : IModel<ulong>
{
public DiscordClient Client { get; }
public ulong Id { get; }
public string AvatarId { get; }
public string AvatarUrl { get; }
public ushort Discriminator { get; }
public string CurrentGame { get; }
public UserStatus Status { get; }
public string Mention { get; }
public string Email { get; }
public bool? IsVerified { get; }

public string Name { get; set; }

public Task Save() => null;
}
}

+ 20
- 0
ref/Entities/Region.cs View File

@@ -0,0 +1,20 @@
namespace Discord
{
public class Region
{
public string Id { get; }
public string Name { get; }
public string Hostname { get; }
public int Port { get; }
public bool Vip { get; }

internal Region(string id, string name, string hostname, int port, bool vip)
{
Id = id;
Name = name;
Hostname = hostname;
Port = port;
Vip = vip;
}
}
}

+ 29
- 0
ref/Entities/Role.cs View File

@@ -0,0 +1,29 @@
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Discord
{
public class Role : IModel<ulong>, IMentionable
{
public DiscordClient Client { get; }

public ulong Id { get; }
public Server Server { get; }
public string Name { get; }
public bool IsHoisted { get; }
public int Position { get; }
public bool IsManaged { get; }
public ServerPermissions Permissions { get; }
public Color Color { get; }
public bool IsEveryone { get; }
public IEnumerable<User> Members { get; }
public string Mention { get; }
public Task Delete() => null;

public Task Save() => null;
}
}

+ 70
- 0
ref/Entities/Server.cs View File

@@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Discord
{
public class Server : IModel<ulong>
{
public class Emoji
{
public string Id { get; }
public string Name { get; }
public bool IsManaged { get; }
public bool RequireColons { get; }
public IEnumerable<Role> Roles { get; }
}
public ulong Id { get; }
public User CurrentUser { get; }
public string IconId { get; }
public string SplashId { get; }
public string IconUrl { get; }
public string SplashUrl { get; }
public int ChannelCount { get; }
public int UserCount { get; }
public int RoleCount { get; }
public TextChannel DefaultChannel { get; }
public Role EveryoneRole { get; }
public IEnumerable<string> Features { get; }
public IEnumerable<Emoji> CustomEmojis { get; }
public IEnumerable<Channel> Channels { get; }
public IEnumerable<TextChannel> TextChannels { get; }
public IEnumerable<VoiceChannel> VoiceChannels { get; }
public IEnumerable<User> Users { get; }
public IEnumerable<Role> Roles { get; }

public string Name { get; set; }
public Region Region { get; set; }
public int AFKTimeout { get; set; }
public DateTime JoinedAt { get; set; }
public User Owner { get; set; }
public VoiceChannel AFKChannel { get; set; }
public IPublicChannel GetChannel(ulong id) => null;
public IPublicChannel GetChannel(string mention) => null;
public Role GetRole(ulong id) => null;
public User GetUser(ulong id) => null;
public User GetUser(string name, ushort discriminator) => null;
public User GetUser(string mention) => null;
public Task<IEnumerable<User>> DownloadBans() => null;
public Task<IEnumerable<Invite>> DownloadInvites() => null;

public Task Leave() => null;
public Task Delete() => null;
public Task Save() => null;

public Task<Channel> CreateChannel(string name, ChannelType type) => null;
public Task<Invite> CreateInvite(int? maxAge = 1800, int? maxUses = null, bool tempMembership = false, bool withXkcd = false) => null;
public Task<Role> CreateRole(string name, ServerPermissions? permissions = null, Color color = null, bool isHoisted = false) => null;

public Task Ban(User user, int pruneDays = 0) => null;
public Task Unban(User user) => null;
public Task Unban(ulong userId) => null;
public Task ReorderChannels(IEnumerable<Channel> channels) => null;
public Task ReorderRoles(IEnumerable<Role> roles, Role after = null) => null;
public Task<int> PruneUsers(int days = 30, bool simulate = false) => null;
}
}

+ 55
- 0
ref/Entities/User.cs View File

@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace Discord
{
public class User : IModel<ulong>
{
public DiscordClient Client { get; }
public ulong Id { get; }
public Server Server { get; }
public string Name { get; }
public ushort Discriminator { get; }
public string AvatarId { get; }
public string CurrentGame { get; }
public UserStatus Status { get; }
public DateTime JoinedAt { get; }
public DateTime? LastActivityAt { get; }
public Channel PrivateChannel => null;
public string Mention => null;
public bool IsSelfMuted => false;
public bool IsSelfDeafened => false;
public bool IsServerMuted => false;
public bool IsServerDeafened => false;
public bool IsServerSuppressed => false;
public DateTime? LastOnlineAt => null;
public Channel VoiceChannel => null;
public string AvatarUrl => null;
public IEnumerable<Role> Roles => null;
public IEnumerable<Channel> Channels => null;

public Task Kick() => null;

public ServerPermissions ServerPermissions => default(ServerPermissions);
public ChannelPermissions GetPermissions(Channel channel) => default(ChannelPermissions);
public Task<Channel> CreatePMChannel() => null;

public Task<Message> SendMessage(string text) => null;
public Task<Message> SendFile(string filePath) => null;
public Task<Message> SendFile(string filename, Stream stream) => null;

public bool HasRole(Role role) => false;

public Task AddRoles(params Role[] roles) => null;
public Task RemoveRoles(params Role[] roles) => null;

public Task Save() => null;
}
}

+ 8
- 0
ref/Enums/ChannelType.cs View File

@@ -0,0 +1,8 @@
namespace Discord
{
public enum ChannelType
{
Text,
Voice
}
}

+ 10
- 0
ref/Enums/ConnectionState.cs View File

@@ -0,0 +1,10 @@
namespace Discord
{
public enum ConnectionState
{
Disconnected,
Connecting,
Connected,
Disconnecting
}
}

+ 9
- 0
ref/Enums/ImageType.cs View File

@@ -0,0 +1,9 @@
namespace Discord
{
public enum ImageType
{
None,
Jpeg,
Png
}
}

+ 11
- 0
ref/Enums/LogSeverity.cs View File

@@ -0,0 +1,11 @@
namespace Discord
{
public enum LogSeverity
{
Error = 1,
Warning = 2,
Info = 3,
Verbose = 4,
Debug = 5
}
}

+ 18
- 0
ref/Enums/MessageState.cs View File

@@ -0,0 +1,18 @@
namespace Discord
{
public enum MessageState : byte
{
/// <summary> Message did not originate from this session, or was successfully sent. </summary>
Normal = 0,
/// <summary> Message is current queued. </summary>
Queued,
/// <summary> Message was deleted. </summary>
Deleted,
/// <summary> Message was deleted before it was sent. </summary>
Aborted,
/// <summary> Message failed to be sent. </summary>
Failed,
/// <summary> Message has been removed from cache and will no longer receive updates. </summary>
Detached
}
}

+ 9
- 0
ref/Enums/PermValue.cs View File

@@ -0,0 +1,9 @@
namespace Discord
{
public enum PermValue
{
Allow,
Deny,
Inherit
}
}

+ 31
- 0
ref/Enums/PermissionBits.cs View File

@@ -0,0 +1,31 @@
namespace Discord
{
internal enum PermissionBits
{
//General
CreateInstantInvite = 0,
KickMembers = 1,
BanMembers = 2,
ManageRolesOrPermissions = 3,
ManageChannel = 4,
ManageServer = 5,

//Text
ReadMessages = 10,
SendMessages = 11,
SendTTSMessages = 12,
ManageMessages = 13,
EmbedLinks = 14,
AttachFiles = 15,
ReadMessageHistory = 16,
MentionEveryone = 17,

//Voice
Connect = 20,
Speak = 21,
MuteMembers = 22,
DeafenMembers = 23,
MoveMembers = 24,
UseVoiceActivation = 25
}
}

+ 8
- 0
ref/Enums/PermissionTarget.cs View File

@@ -0,0 +1,8 @@
namespace Discord
{
public enum PermissionTarget
{
Role,
User
}
}

+ 8
- 0
ref/Enums/Relative.cs View File

@@ -0,0 +1,8 @@
namespace Discord
{
public enum Relative
{
Before,
After
}
}

+ 9
- 0
ref/Enums/UserStatus.cs View File

@@ -0,0 +1,9 @@
namespace Discord
{
public enum UserStatus
{
Online,
Idle,
Offline
}
}

+ 10
- 0
ref/Events/ChannelEventArgs.cs View File

@@ -0,0 +1,10 @@
using System;

namespace Discord
{
public class ChannelEventArgs : EventArgs
{
public Channel Channel => null;
public Server Server => null;
}
}

+ 11
- 0
ref/Events/ChannelUpdatedEventArgs.cs View File

@@ -0,0 +1,11 @@
using System;

namespace Discord
{
public class ChannelUpdatedEventArgs : EventArgs
{
public Channel Before => null;
public Channel After => null;
public Server Server => null;
}
}

+ 8
- 0
ref/Events/ChannelUserEventArgs.cs View File

@@ -0,0 +1,8 @@
namespace Discord
{
public class ChannelUserEventArgs
{
public Channel Channel => null;
public User User => null;
}
}

+ 10
- 0
ref/Events/DisconnectedEventArgs.cs View File

@@ -0,0 +1,10 @@
using System;

namespace Discord
{
public class DisconnectedEventArgs : EventArgs
{
public bool WasUnexpected => false;
public Exception Exception => null;
}
}

+ 12
- 0
ref/Events/LogMessageEventArgs.cs View File

@@ -0,0 +1,12 @@
using System;

namespace Discord
{
public class LogMessageEventArgs : EventArgs
{
public LogSeverity Severity => default(LogSeverity);
public string Source => null;
public string Message => null;
public Exception Exception => null;
}
}

+ 12
- 0
ref/Events/MessageEventArgs.cs View File

@@ -0,0 +1,12 @@
using System;

namespace Discord
{
public class MessageEventArgs : EventArgs
{
public Message Message => null;
public User User => null;
public Channel Channel => null;
public Server Server => null;
}
}

+ 13
- 0
ref/Events/MessageUpdatedEventArgs.cs View File

@@ -0,0 +1,13 @@
using System;

namespace Discord
{
public class MessageUpdatedEventArgs : EventArgs
{
public Message Before => null;
public Message After => null;
public User User => null;
public Channel Channel => null;
public Server Server => null;
}
}

+ 10
- 0
ref/Events/ProfileUpdatedEventArgs.cs View File

@@ -0,0 +1,10 @@
using System;

namespace Discord
{
public class ProfileUpdatedEventArgs : EventArgs
{
public Profile Before => null;
public Profile After => null;
}
}

+ 10
- 0
ref/Events/RoleEventArgs.cs View File

@@ -0,0 +1,10 @@
using System;

namespace Discord
{
public class RoleEventArgs : EventArgs
{
public Role Role => null;
public Server Server => null;
}
}

+ 11
- 0
ref/Events/RoleUpdatedEventArgs.cs View File

@@ -0,0 +1,11 @@
using System;

namespace Discord
{
public class RoleUpdatedEventArgs : EventArgs
{
public Role Before => null;
public Role After => null;
public Server Server => null;
}
}

+ 9
- 0
ref/Events/ServerEventArgs.cs View File

@@ -0,0 +1,9 @@
using System;

namespace Discord
{
public class ServerEventArgs : EventArgs
{
public Server Server => null;
}
}

+ 10
- 0
ref/Events/ServerUpdatedEventArgs.cs View File

@@ -0,0 +1,10 @@
using System;

namespace Discord
{
public class ServerUpdatedEventArgs : EventArgs
{
public Server Before => null;
public Server After => null;
}
}

+ 9
- 0
ref/Events/UserEventArgs.cs View File

@@ -0,0 +1,9 @@
using System;
namespace Discord
{
public class UserEventArgs : EventArgs
{
public User User => null;
public Server Server => null;
}
}

+ 10
- 0
ref/Events/UserUpdatedEventArgs.cs View File

@@ -0,0 +1,10 @@
using System;
namespace Discord
{
public class UserUpdatedEventArgs : EventArgs
{
public User Before => null;
public User After => null;
public Server Server => null;
}
}

+ 14
- 0
ref/Format.cs View File

@@ -0,0 +1,14 @@
namespace Discord
{
public static class Format
{
public static string Escape(string text) => null;
public static string Bold(string text, bool escape = true) => null;
public static string Italics(string text, bool escape = true) => null;
public static string Underline(string text, bool escape = true) => null;
public static string Strikeout(string text, bool escape = true) => null;

public static string Code(string text, string language = null) => null;
}
}

+ 30
- 0
ref/ILogger.cs View File

@@ -0,0 +1,30 @@
using System;

namespace Discord.Logging
{
public interface ILogger
{
LogSeverity Level { get; }

void Log(LogSeverity severity, string message, Exception exception = null);
void Error(string message, Exception exception = null);
void Error(Exception exception);
void Warning(string message, Exception exception = null);
void Warning(Exception exception);
void Info(string message, Exception exception = null);
void Info(Exception exception);
void Verbose(string message, Exception exception = null);
void Verbose(Exception exception);
void Debug(string message, Exception exception = null);
void Debug(Exception exception);

#if DOTNET5_4
void Log(LogSeverity severity, FormattableString message, Exception exception = null);
void Error(FormattableString message, Exception exception = null);
void Warning(FormattableString message, Exception exception = null);
void Info(FormattableString message, Exception exception = null);
void Verbose(FormattableString message, Exception exception = null);
void Debug(FormattableString message, Exception exception = null);
#endif
}
}

+ 9
- 0
ref/MessageQueue.cs View File

@@ -0,0 +1,9 @@
namespace Discord.Net
{
public class MessageQueue
{
public int Count { get; }

public void Clear() { }
}
}

+ 16
- 0
ref/Net/HttpException.cs View File

@@ -0,0 +1,16 @@
using System;
using System.Net;

namespace Discord.Net
{
public class HttpException : Exception
{
public HttpStatusCode StatusCode { get; }

public HttpException(HttpStatusCode statusCode)
: base($"The server responded with error {(int)statusCode} ({statusCode})")
{
StatusCode = statusCode;
}
}
}

+ 17
- 0
ref/Net/Rest/CompletedRequestEventArgs.cs View File

@@ -0,0 +1,17 @@
namespace Discord.Net.Rest
{
public class CompletedRequestEventArgs : RequestEventArgs
{
public object Response { get; set; }
public string ResponseJson { get; set; }
public double Milliseconds { get; set; }

public CompletedRequestEventArgs(IRestRequest request, object response, string responseJson, double milliseconds)
: base(request)
{
Response = response;
ResponseJson = responseJson;
Milliseconds = milliseconds;
}
}
}

+ 23
- 0
ref/Net/Rest/IRestRequest.cs View File

@@ -0,0 +1,23 @@
namespace Discord.Net.Rest
{
public interface IRestRequest
{
string Method { get; }
string Endpoint { get; }
object Payload { get; }
}
public interface IRestRequest<ResponseT> : IRestRequest
where ResponseT : class
{
}

public interface IRestFileRequest : IRestRequest
{
string Filename { get; }
Stream Stream { get; }
}
public interface IRestFileRequest<ResponseT> : IRestFileRequest, IRestRequest<Message>
where ResponseT : class
{
}
}

+ 12
- 0
ref/Net/Rest/RequestEventArgs.cs View File

@@ -0,0 +1,12 @@
using System;

namespace Discord.Net.Rest
{
public class RequestEventArgs : EventArgs
{
public IRestRequest Request { get; set; }
public bool Cancel { get; set; }

public RequestEventArgs(IRestRequest request) { }
}
}

+ 25
- 0
ref/Net/Rest/RestClient.cs View File

@@ -0,0 +1,25 @@
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Discord.Net.Rest
{
public abstract partial class RestClient
{
public event EventHandler<RequestEventArgs> SendingRequest = delegate { };
public event EventHandler<CompletedRequestEventArgs> SentRequest = delegate { };

public CancellationToken CancelToken { get; set; }
public string Token { get; set; }
public Task<ResponseT> Send<ResponseT>(IRestRequest<ResponseT> request)
where ResponseT : class
=> null;
public Task Send(IRestRequest request) => null;

public Task<ResponseT> Send<ResponseT>(IRestFileRequest<ResponseT> request)
where ResponseT : class
=> null;
public Task Send(IRestFileRequest request) => null;
}
}

+ 9
- 0
ref/Net/TimeoutException.cs View File

@@ -0,0 +1,9 @@
using System;

namespace Discord.Net
{
public class TimeoutException : OperationCanceledException
{
public TimeoutException() { }
}
}

+ 12
- 0
ref/Net/WebSocketException.cs View File

@@ -0,0 +1,12 @@
using System;

namespace Discord.Net
{
public class WebSocketException : Exception
{
public int Code { get; }
public string Reason { get; }

public WebSocketException(int code, string reason) { }
}
}

+ 11
- 0
ref/Net/WebSockets/BinaryMessageEventArgs.cs View File

@@ -0,0 +1,11 @@
using System;

namespace Discord.Net.WebSockets
{
public class BinaryMessageEventArgs : EventArgs
{
public byte[] Data { get; }

public BinaryMessageEventArgs(byte[] data) { }
}
}

+ 31
- 0
ref/Net/WebSockets/GatewaySocket.cs View File

@@ -0,0 +1,31 @@
using Discord.Logging;
using Discord.Net.Rest;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Discord.Net.WebSockets
{
public class GatewaySocket : WebSocket
{
public string SessionId { get; private set; }

public event EventHandler<WebSocketEventEventArgs> ReceivedDispatch = delegate { };

public GatewaySocket(DiscordConfig config, ILogger logger) : base(config, logger) { }

public Task Connect(RestClient rest, CancellationToken parentCancelToken) => null;
public Task Disconnect() => null;

public void SendIdentify(string token) { }

public void SendResume() { }
public override void SendHeartbeat() { }
public void SendUpdateStatus(long? idleSince, string gameName) { }
public void SendUpdateVoice(ulong? serverId, ulong? channelId, bool isSelfMuted, bool isSelfDeafened) { }
public void SendRequestMembers(IEnumerable<ulong> serverId, string query, int limit) { }
public override void WaitForConnection(CancellationToken cancelToken) { }
}
}

+ 18
- 0
ref/Net/WebSockets/IWebSocketEngine.cs View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Discord.Net.WebSockets
{
public interface IWebSocketEngine
{
event EventHandler<BinaryMessageEventArgs> BinaryMessage;
event EventHandler<TextMessageEventArgs> TextMessage;

Task Connect(string host, CancellationToken cancelToken);
Task Disconnect();
void QueueMessage(string message);
IEnumerable<Task> GetTasks(CancellationToken cancelToken);
}
}

+ 11
- 0
ref/Net/WebSockets/TextMessageEventArgs.cs View File

@@ -0,0 +1,11 @@
using System;

namespace Discord.Net.WebSockets
{
public class TextMessageEventArgs : EventArgs
{
public string Message { get; }

public TextMessageEventArgs(string msg) { Message = msg; }
}
}

+ 22
- 0
ref/Net/WebSockets/WebSocket.cs View File

@@ -0,0 +1,22 @@
using Discord.Logging;
using System;
using System.Threading;

namespace Discord.Net.WebSockets
{
public abstract partial class WebSocket
{
public CancellationToken CancelToken { get; }
public ConnectionState State { get; }
public string Host { get; }

public event EventHandler Connected = delegate { };
public event EventHandler<DisconnectedEventArgs> Disconnected = delegate { };

public WebSocket(DiscordConfig config, ILogger logger) { }

public abstract void SendHeartbeat();

public virtual void WaitForConnection(CancellationToken cancelToken) { }
}
}

+ 17
- 0
ref/Net/WebSockets/WebSocketEventEventArgs.cs View File

@@ -0,0 +1,17 @@
using Newtonsoft.Json.Linq;
using System;

namespace Discord.Net.WebSockets
{
public class WebSocketEventEventArgs : EventArgs
{
public string Type { get; }
public JToken Payload { get; }

internal WebSocketEventEventArgs(string type, JToken data)
{
Type = type;
Payload = data;
}
}
}

+ 81
- 0
ref/project.json View File

@@ -0,0 +1,81 @@
{
"version": "0.9.0-rc3-3",
"description": "An unofficial .Net API wrapper for the Discord client.",
"authors": [
"RogueException"
],
"tags": [
"discord",
"discordapp"
],
"projectUrl": "https://github.com/RogueException/Discord.Net",
"licenseUrl": "http://opensource.org/licenses/MIT",
"repository": {
"type": "git",
"url": "git://github.com/RogueException/Discord.Net"
},
"compile": [ "**/*.cs", "../Discord.Net.Shared/*.cs" ],

"compilationOptions": {
"allowUnsafe": true,
"warningsAsErrors": true
},

"configurations": {
"TestResponses": {
"compilationOptions": {
"define": [
"DEBUG",
"TRACE",
"TEST_RESPONSES"
]
}
}
},

"dependencies": {
"Newtonsoft.Json": "8.0.1",
"Nito.AsyncEx": "3.0.1"
},

"frameworks": {
"dotnet5.4": {
"dependencies": {
"System.Collections": "4.0.11-beta-23516",
"System.Collections.Concurrent": "4.0.11-beta-23516",
"System.Dynamic.Runtime": "4.0.11-beta-23516",
"System.IO.FileSystem": "4.0.1-beta-23516",
"System.IO.Compression": "4.1.0-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Net.Http": "4.0.1-beta-23516",
"System.Net.NameResolution": "4.0.0-beta-23516",
"System.Net.Sockets": "4.1.0-beta-23409",
"System.Net.Requests": "4.0.11-beta-23516",
"System.Net.WebSockets.Client": "4.0.0-beta-23516",
"System.Reflection": "4.1.0-beta-23516",
"System.Reflection.Emit.Lightweight": "4.0.1-beta-23516",
"System.Runtime.InteropServices": "4.0.21-beta-23516",
"System.Runtime.Serialization.Primitives": "4.1.0-beta-23516",
"System.Security.Cryptography.Algorithms": "4.0.0-beta-23516",
"System.Text.RegularExpressions": "4.0.11-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
},
"net45": {
"frameworkAssemblies": {
"System.Runtime": {
"type": "build",
"version": ""
},
"System.Threading.Tasks": {
"type": "build",
"version": ""
}
},
"dependencies": {
"WebSocket4Net": "0.14.1",
"RestSharp": "105.2.3"
}
}
}
}

Loading…
Cancel
Save