Reorganized files, moved DiscordRestClient to Rest.DiscordClient, added RestProvider to config

This commit is contained in:
RogueException
2016-05-08 15:02:29 -03:00
parent 82471845d8
commit 137998f7e0
76 changed files with 106 additions and 103 deletions

View File

@@ -95,76 +95,76 @@
<Compile Include="API\Rest\ModifyVoiceChannelParams.cs" />
<Compile Include="DiscordConfig.cs" />
<Compile Include="API\DiscordRawClient.cs" />
<Compile Include="DiscordRestClient.cs" />
<Compile Include="Entities\Common\Guilds\IGuildEmbed.cs" />
<Compile Include="Entities\Common\Guilds\IIntegrationAccount.cs" />
<Compile Include="Entities\Common\Users\IConnection.cs" />
<Compile Include="Entities\Common\Guilds\IGuildIntegration.cs" />
<Compile Include="Entities\Common\Invites\IPublicInvite.cs" />
<Compile Include="Entities\Common\Messages\Attachment.cs" />
<Compile Include="Entities\Common\Channels\IChannel.cs" />
<Compile Include="Entities\Common\Channels\IDMChannel.cs" />
<Compile Include="Entities\Common\Channels\IGuildChannel.cs" />
<Compile Include="Entities\Common\Channels\IMessageChannel.cs" />
<Compile Include="Entities\Common\Channels\ITextChannel.cs" />
<Compile Include="Entities\Common\Channels\IVoiceChannel.cs" />
<Compile Include="Entities\Common\Channels\ChannelType.cs" />
<Compile Include="Entities\Common\Roles\Color.cs" />
<Compile Include="Entities\Common\Messages\Direction.cs" />
<Compile Include="Entities\Common\Messages\Embed.cs" />
<Compile Include="Entities\Common\Messages\EmbedProvider.cs" />
<Compile Include="Entities\Common\Messages\EmbedThumbnail.cs" />
<Compile Include="Entities\Common\Guilds\Emoji.cs" />
<Compile Include="Entities\Common\Guilds\IUserGuild.cs" />
<Compile Include="Entities\Common\IDeletable.cs" />
<Compile Include="Entities\Common\IEntity.cs" />
<Compile Include="Entities\Common\Guilds\IGuild.cs" />
<Compile Include="Entities\Common\IMentionable.cs" />
<Compile Include="Entities\Common\Messages\IMessage.cs" />
<Compile Include="Entities\Common\Invites\IGuildInvite.cs" />
<Compile Include="Entities\Common\Invites\IInvite.cs" />
<Compile Include="Entities\Common\Roles\IRole.cs" />
<Compile Include="Entities\Common\ISnowflakeEntity.cs" />
<Compile Include="Entities\Common\IUpdateable.cs" />
<Compile Include="Entities\Common\Guilds\IVoiceRegion.cs" />
<Compile Include="Entities\Common\Permissions\ChannelPermission.cs" />
<Compile Include="Entities\Common\Permissions\GuildPermission.cs" />
<Compile Include="Entities\Common\Permissions\ChannelPermissions.cs" />
<Compile Include="Entities\Common\Permissions\GuildPermissions.cs" />
<Compile Include="Entities\Common\Permissions\Overwrite.cs" />
<Compile Include="Entities\Common\Permissions\OverwritePermissions.cs" />
<Compile Include="Entities\Common\Permissions\PermissionUtilities.cs" />
<Compile Include="Entities\Common\Permissions\PermissionTarget.cs" />
<Compile Include="Entities\Common\Permissions\PermValue.cs" />
<Compile Include="Entities\Common\Users\UserStatus.cs" />
<Compile Include="Entities\Common\Users\IDMUser.cs" />
<Compile Include="Entities\Common\Users\IGuildUser.cs" />
<Compile Include="Entities\Common\Users\ISelfUser.cs" />
<Compile Include="Entities\Common\Users\IUser.cs" />
<Compile Include="Entities\Rest\Guilds\Guild.cs" />
<Compile Include="Entities\Rest\Channels\GuildChannel.cs" />
<Compile Include="Entities\Rest\Channels\TextChannel.cs" />
<Compile Include="Entities\Rest\Channels\VoiceChannel.cs" />
<Compile Include="Entities\Rest\Guilds\GuildEmbed.cs" />
<Compile Include="Entities\Rest\Guilds\GuildIntegration.cs" />
<Compile Include="Entities\Rest\Guilds\IntegrationAccount.cs" />
<Compile Include="Entities\Rest\Users\Connection.cs" />
<Compile Include="Entities\Shared\Helpers\PermissionHelper.cs" />
<Compile Include="Entities\Rest\Invites\GuildInvite.cs" />
<Compile Include="Entities\Rest\Invites\Invite.cs" />
<Compile Include="Entities\Rest\Invites\PublicInvite.cs" />
<Compile Include="Entities\Rest\Message.cs" />
<Compile Include="Entities\Rest\Role.cs" />
<Compile Include="Entities\Rest\Guilds\UserGuild.cs" />
<Compile Include="Entities\Rest\Users\DMUser.cs" />
<Compile Include="Entities\Rest\Users\GuildUser.cs" />
<Compile Include="Entities\Rest\Users\PublicUser.cs" />
<Compile Include="Entities\Rest\Guilds\VoiceRegion.cs" />
<Compile Include="Events\LogMessageEventArgs.cs" />
<Compile Include="Events\SentRequestEventArgs.cs" />
<Compile Include="Helpers\DateTimeHelper.cs" />
<Compile Include="Helpers\EventExtensions.cs" />
<Compile Include="Helpers\MentionHelper.cs" />
<Compile Include="Rest\DiscordClient.cs" />
<Compile Include="Common\Entities\Guilds\IGuildEmbed.cs" />
<Compile Include="Common\Entities\Guilds\IIntegrationAccount.cs" />
<Compile Include="Common\Entities\Users\IConnection.cs" />
<Compile Include="Common\Entities\Guilds\IGuildIntegration.cs" />
<Compile Include="Common\Entities\Invites\IPublicInvite.cs" />
<Compile Include="Common\Entities\Messages\Attachment.cs" />
<Compile Include="Common\Entities\Channels\IChannel.cs" />
<Compile Include="Common\Entities\Channels\IDMChannel.cs" />
<Compile Include="Common\Entities\Channels\IGuildChannel.cs" />
<Compile Include="Common\Entities\Channels\IMessageChannel.cs" />
<Compile Include="Common\Entities\Channels\ITextChannel.cs" />
<Compile Include="Common\Entities\Channels\IVoiceChannel.cs" />
<Compile Include="Common\Entities\Channels\ChannelType.cs" />
<Compile Include="Common\Entities\Roles\Color.cs" />
<Compile Include="Common\Entities\Messages\Direction.cs" />
<Compile Include="Common\Entities\Messages\Embed.cs" />
<Compile Include="Common\Entities\Messages\EmbedProvider.cs" />
<Compile Include="Common\Entities\Messages\EmbedThumbnail.cs" />
<Compile Include="Common\Entities\Guilds\Emoji.cs" />
<Compile Include="Common\Entities\Guilds\IUserGuild.cs" />
<Compile Include="Common\Entities\IDeletable.cs" />
<Compile Include="Common\Entities\IEntity.cs" />
<Compile Include="Common\Entities\Guilds\IGuild.cs" />
<Compile Include="Common\Entities\IMentionable.cs" />
<Compile Include="Common\Entities\Messages\IMessage.cs" />
<Compile Include="Common\Entities\Invites\IGuildInvite.cs" />
<Compile Include="Common\Entities\Invites\IInvite.cs" />
<Compile Include="Common\Entities\Roles\IRole.cs" />
<Compile Include="Common\Entities\ISnowflakeEntity.cs" />
<Compile Include="Common\Entities\IUpdateable.cs" />
<Compile Include="Common\Entities\Guilds\IVoiceRegion.cs" />
<Compile Include="Common\Entities\Permissions\ChannelPermission.cs" />
<Compile Include="Common\Entities\Permissions\GuildPermission.cs" />
<Compile Include="Common\Entities\Permissions\ChannelPermissions.cs" />
<Compile Include="Common\Entities\Permissions\GuildPermissions.cs" />
<Compile Include="Common\Entities\Permissions\Overwrite.cs" />
<Compile Include="Common\Entities\Permissions\OverwritePermissions.cs" />
<Compile Include="Common\Entities\Permissions\PermissionUtilities.cs" />
<Compile Include="Common\Entities\Permissions\PermissionTarget.cs" />
<Compile Include="Common\Entities\Permissions\PermValue.cs" />
<Compile Include="Common\Entities\Users\UserStatus.cs" />
<Compile Include="Common\Entities\Users\IDMUser.cs" />
<Compile Include="Common\Entities\Users\IGuildUser.cs" />
<Compile Include="Common\Entities\Users\ISelfUser.cs" />
<Compile Include="Common\Entities\Users\IUser.cs" />
<Compile Include="Rest\Entities\Guilds\Guild.cs" />
<Compile Include="Rest\Entities\Channels\GuildChannel.cs" />
<Compile Include="Rest\Entities\Channels\TextChannel.cs" />
<Compile Include="Rest\Entities\Channels\VoiceChannel.cs" />
<Compile Include="Rest\Entities\Guilds\GuildEmbed.cs" />
<Compile Include="Rest\Entities\Guilds\GuildIntegration.cs" />
<Compile Include="Rest\Entities\Guilds\IntegrationAccount.cs" />
<Compile Include="Rest\Entities\Users\Connection.cs" />
<Compile Include="Common\Helpers\PermissionHelper.cs" />
<Compile Include="Rest\Entities\Invites\GuildInvite.cs" />
<Compile Include="Rest\Entities\Invites\Invite.cs" />
<Compile Include="Rest\Entities\Invites\PublicInvite.cs" />
<Compile Include="Rest\Entities\Message.cs" />
<Compile Include="Rest\Entities\Role.cs" />
<Compile Include="Rest\Entities\Guilds\UserGuild.cs" />
<Compile Include="Rest\Entities\Users\DMUser.cs" />
<Compile Include="Rest\Entities\Users\GuildUser.cs" />
<Compile Include="Rest\Entities\Users\PublicUser.cs" />
<Compile Include="Rest\Entities\Guilds\VoiceRegion.cs" />
<Compile Include="Common\Events\LogMessageEventArgs.cs" />
<Compile Include="Common\Events\SentRequestEventArgs.cs" />
<Compile Include="Common\Helpers\DateTimeHelper.cs" />
<Compile Include="Common\Helpers\EventExtensions.cs" />
<Compile Include="Common\Helpers\MentionHelper.cs" />
<Compile Include="IDiscordClient.cs" />
<Compile Include="Logging\ILogger.cs" />
<Compile Include="Logging\Logger.cs" />
@@ -186,13 +186,13 @@
<Compile Include="Net\Rest\MultipartFile.cs" />
<Compile Include="Net\Rest\RestClientProvider.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Entities\Rest\Channels\DMChannel.cs" />
<Compile Include="Entities\Rest\Users\SelfUser.cs" />
<Compile Include="Entities\Rest\Users\User.cs" />
<Compile Include="Rest\Entities\Channels\DMChannel.cs" />
<Compile Include="Rest\Entities\Users\SelfUser.cs" />
<Compile Include="Rest\Entities\Users\User.cs" />
<Compile Include="TokenType.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Entities\Common\Users\IVoiceState.cs.old" />
<None Include="Common\Entities\Users\IVoiceState.cs.old" />
<None Include="project.json" />
</ItemGroup>
<ItemGroup>

View File

@@ -1,4 +1,5 @@
using System.Reflection;
using Discord.Net.Rest;
using System.Reflection;
namespace Discord
{
@@ -23,5 +24,8 @@ namespace Discord
/// <summary> Gets or sets the minimum log level severity that will be sent to the LogMessage event. </summary>
public LogSeverity LogLevel { get; set; } = LogSeverity.Info;
/// <summary> Gets or sets the provider used to generate new REST connections. </summary>
public RestClientProvider RestClientProvider { get; set; } = (url, ct) => new DefaultRestClient(url, ct);
}
}

View File

@@ -1,7 +1,6 @@
using Discord.API.Rest;
using Discord.Logging;
using Discord.Net.Rest;
using Discord.Rest;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
@@ -10,9 +9,9 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace Discord
namespace Discord.Rest
{
public sealed class DiscordRestClient : IDiscordClient, IDisposable
public sealed class DiscordClient : IDiscordClient, IDisposable
{
public event EventHandler<LogMessageEventArgs> Log;
public event EventHandler LoggedIn, LoggedOut;
@@ -28,12 +27,12 @@ namespace Discord
internal API.DiscordRawClient BaseClient { get; private set; }
internal SelfUser CurrentUser { get; private set; }
public DiscordRestClient(DiscordConfig config = null)
public DiscordClient(DiscordConfig config = null)
{
if (config == null)
config = new DiscordConfig();
_restClientProvider = (baseUrl, cancelToken) => new DefaultRestClient(baseUrl, cancelToken);
_restClientProvider = config.RestClientProvider;
_connectionLock = new SemaphoreSlim(1, 1);
_log = new LogManager(config.LogLevel);

View File

@@ -13,7 +13,7 @@ namespace Discord.Rest
{
/// <inheritdoc />
public ulong Id { get; }
internal DiscordRestClient Discord { get; }
internal DiscordClient Discord { get; }
/// <inheritdoc />
public DMUser Recipient { get; private set; }
@@ -23,7 +23,7 @@ namespace Discord.Rest
/// <inheritdoc />
public IEnumerable<IUser> Users => ImmutableArray.Create<IUser>(Discord.CurrentUser, Recipient);
internal DMChannel(DiscordRestClient discord, Model model)
internal DMChannel(DiscordClient discord, Model model)
{
Id = model.Id;
Discord = discord;

View File

@@ -26,7 +26,7 @@ namespace Discord.Rest
public DateTime CreatedAt => DateTimeHelper.FromSnowflake(Id);
/// <inheritdoc />
public IReadOnlyDictionary<ulong, Overwrite> PermissionOverwrites => _overwrites;
internal DiscordRestClient Discord => Guild.Discord;
internal DiscordClient Discord => Guild.Discord;
internal GuildChannel(Guild guild, Model model)
{

View File

@@ -19,7 +19,7 @@ namespace Discord.Rest
/// <inheritdoc />
public ulong Id { get; }
internal DiscordRestClient Discord { get; }
internal DiscordClient Discord { get; }
/// <inheritdoc />
public string Name { get; private set; }
@@ -56,7 +56,7 @@ namespace Discord.Rest
/// <summary> Gets a collection of all roles in this guild. </summary>
public IEnumerable<Role> Roles => _roles?.Select(x => x.Value) ?? Enumerable.Empty<Role>();
internal Guild(DiscordRestClient discord, Model model)
internal Guild(DiscordClient discord, Model model)
{
Id = model.Id;
Discord = discord;

View File

@@ -12,12 +12,12 @@ namespace Discord.Rest
/// <inheritdoc />
public ulong? ChannelId { get; private set; }
internal DiscordRestClient Discord { get; }
internal DiscordClient Discord { get; }
/// <inheritdoc />
public DateTime CreatedAt => DateTimeHelper.FromSnowflake(Id);
internal GuildEmbed(DiscordRestClient discord, Model model)
internal GuildEmbed(DiscordClient discord, Model model)
{
Discord = discord;
Update(model);

View File

@@ -32,7 +32,7 @@ namespace Discord.Rest
public User User { get; private set; }
/// <inheritdoc />
public IntegrationAccount Account { get; private set; }
internal DiscordRestClient Discord => Guild.Discord;
internal DiscordClient Discord => Guild.Discord;
internal GuildIntegration(Guild guild, Model model)
{

View File

@@ -10,7 +10,7 @@ namespace Discord.Rest
/// <inheritdoc />
public ulong Id { get; }
internal DiscordRestClient Discord { get; }
internal DiscordClient Discord { get; }
/// <inheritdoc />
public string Name { get; private set; }
@@ -22,7 +22,7 @@ namespace Discord.Rest
/// <inheritdoc />
public string IconUrl => API.CDN.GetGuildIconUrl(Id, _iconId);
internal UserGuild(DiscordRestClient discord, Model model)
internal UserGuild(DiscordClient discord, Model model)
{
Discord = discord;
Id = model.Id;

View File

@@ -21,7 +21,7 @@ namespace Discord.Rest
/// <inheritdoc />
public int Uses { get; private set; }
internal override DiscordRestClient Discord => Guild.Discord;
internal override DiscordClient Discord => Guild.Discord;
internal GuildInvite(Guild guild, Model model)
: base(model)

View File

@@ -17,7 +17,7 @@ namespace Discord.Rest
/// <inheritdoc />
public string XkcdUrl => XkcdCode != null ? $"{DiscordConfig.InviteUrl}/{XkcdCode}" : null;
internal abstract DiscordRestClient Discord { get; }
internal abstract DiscordClient Discord { get; }
internal Invite(Model model)
{

View File

@@ -15,9 +15,9 @@ namespace Discord.Rest
/// <inheritdoc />
public ulong ChannelId => _channelId;
internal override DiscordRestClient Discord { get; }
internal override DiscordClient Discord { get; }
internal PublicInvite(DiscordRestClient discord, Model model)
internal PublicInvite(DiscordClient discord, Model model)
: base(model)
{
Discord = discord;

View File

@@ -43,7 +43,7 @@ namespace Discord.Rest
public DateTime CreatedAt => DateTimeHelper.FromSnowflake(Id);
/// <inheritdoc />
public bool IsAuthor => Discord.CurrentUser.Id == Author.Id;
internal DiscordRestClient Discord => (Channel as TextChannel)?.Discord ?? (Channel as DMChannel).Discord;
internal DiscordClient Discord => (Channel as TextChannel)?.Discord ?? (Channel as DMChannel).Discord;
internal Message(IMessageChannel channel, Model model)
{

View File

@@ -33,7 +33,7 @@ namespace Discord.Rest
public bool IsEveryone => Id == Guild.Id;
/// <inheritdoc />
public string Mention => MentionHelper.Mention(this);
internal DiscordRestClient Discord => Guild.Discord;
internal DiscordClient Discord => Guild.Discord;
internal Role(Guild guild, Model model)
{

View File

@@ -7,7 +7,7 @@ namespace Discord.Rest
/// <inheritdoc />
public DMChannel Channel { get; }
internal override DiscordRestClient Discord => Channel.Discord;
internal override DiscordClient Discord => Channel.Discord;
internal DMUser(DMChannel channel, Model model)
: base(model)

View File

@@ -24,7 +24,7 @@ namespace Discord.Rest
/// <inheritdoc />
public IReadOnlyList<Role> Roles => _roles;
internal override DiscordRestClient Discord => Guild.Discord;
internal override DiscordClient Discord => Guild.Discord;
internal GuildUser(Guild guild, Model model)
: base(model.User)

View File

@@ -4,9 +4,9 @@ namespace Discord.Rest
{
public class PublicUser : User
{
internal override DiscordRestClient Discord { get; }
internal override DiscordClient Discord { get; }
internal PublicUser(DiscordRestClient discord, Model model)
internal PublicUser(DiscordClient discord, Model model)
: base(model)
{
Discord = discord;

View File

@@ -7,14 +7,14 @@ namespace Discord.Rest
{
public class SelfUser : User, ISelfUser
{
internal override DiscordRestClient Discord { get; }
internal override DiscordClient Discord { get; }
/// <inheritdoc />
public string Email { get; private set; }
/// <inheritdoc />
public bool IsVerified { get; private set; }
internal SelfUser(DiscordRestClient discord, Model model)
internal SelfUser(DiscordClient discord, Model model)
: base(model)
{
Discord = discord;

View File

@@ -11,7 +11,7 @@ namespace Discord.Rest
/// <inheritdoc />
public ulong Id { get; }
internal abstract DiscordRestClient Discord { get; }
internal abstract DiscordClient Discord { get; }
/// <inheritdoc />
public ushort Discriminator { get; private set; }