Browse Source

Removed Rest's VoiceChannel.GetUser(s). Added IChannel.GetUser(limit, offset)

pull/97/head
RogueException 9 years ago
parent
commit
18f7e805ef
8 changed files with 40 additions and 17 deletions
  1. +2
    -0
      src/Discord.Net/Common/Entities/Channels/IChannel.cs
  2. +1
    -1
      src/Discord.Net/Discord.Net.csproj
  3. +2
    -0
      src/Discord.Net/Rest/Entities/Channels/DMChannel.cs
  4. +12
    -11
      src/Discord.Net/Rest/Entities/Channels/GuildChannel.cs
  5. +16
    -3
      src/Discord.Net/Rest/Entities/Channels/TextChannel.cs
  6. +3
    -2
      src/Discord.Net/Rest/Entities/Channels/VoiceChannel.cs
  7. +2
    -0
      src/Discord.Net/WebSocket/Entities/Channels/DMChannel.cs
  8. +2
    -0
      src/Discord.Net/WebSocket/Entities/Channels/GuildChannel.cs

+ 2
- 0
src/Discord.Net/Common/Entities/Channels/IChannel.cs View File

@@ -7,6 +7,8 @@ namespace Discord
{ {
/// <summary> Gets a collection of all users in this channel. </summary> /// <summary> Gets a collection of all users in this channel. </summary>
Task<IEnumerable<IUser>> GetUsers(); Task<IEnumerable<IUser>> GetUsers();
/// <summary> Gets a paginated collection of all users in this channel. </summary>
Task<IEnumerable<IUser>> GetUsers(int limit, int offset = 0);
/// <summary> Gets a user in this channel with the provided id.</summary> /// <summary> Gets a user in this channel with the provided id.</summary>
Task<IUser> GetUser(ulong id); Task<IUser> GetUser(ulong id);
} }


+ 1
- 1
src/Discord.Net/Discord.Net.csproj View File

@@ -26,7 +26,7 @@
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<DefineConstants>TRACE;__DEMO__,__DEMO_EXPERIMENTAL__</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>


+ 2
- 0
src/Discord.Net/Rest/Entities/Channels/DMChannel.cs View File

@@ -131,6 +131,8 @@ namespace Discord.Rest


async Task<IEnumerable<IUser>> IChannel.GetUsers() async Task<IEnumerable<IUser>> IChannel.GetUsers()
=> await GetUsers().ConfigureAwait(false); => await GetUsers().ConfigureAwait(false);
async Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
=> (await GetUsers().ConfigureAwait(false)).Skip(offset).Take(limit);
async Task<IUser> IChannel.GetUser(ulong id) async Task<IUser> IChannel.GetUser(ulong id)
=> await GetUser(id).ConfigureAwait(false); => await GetUser(id).ConfigureAwait(false);
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id) Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)


+ 12
- 11
src/Discord.Net/Rest/Entities/Channels/GuildChannel.cs View File

@@ -58,12 +58,7 @@ namespace Discord.Rest
var model = await Discord.BaseClient.ModifyGuildChannel(Id, args).ConfigureAwait(false); var model = await Discord.BaseClient.ModifyGuildChannel(Id, args).ConfigureAwait(false);
Update(model); Update(model);
} }

/// <summary> Gets a user in this channel with the given id. </summary>
public abstract Task<GuildUser> GetUser(ulong id);
/// <summary> Gets all users in this channel. </summary>
public abstract Task<IEnumerable<GuildUser>> GetUsers();

/// <inheritdoc /> /// <inheritdoc />
public OverwritePermissions? GetPermissionOverwrite(IUser user) public OverwritePermissions? GetPermissionOverwrite(IUser user)
{ {
@@ -151,18 +146,24 @@ namespace Discord.Rest
/// <inheritdoc /> /// <inheritdoc />
public override string ToString() => Name; public override string ToString() => Name;


protected abstract Task<GuildUser> GetUserInternal(ulong id);
protected abstract Task<IEnumerable<GuildUser>> GetUsersInternal();
protected abstract Task<IEnumerable<GuildUser>> GetUsersInternal(int limit, int offset);

IGuild IGuildChannel.Guild => Guild; IGuild IGuildChannel.Guild => Guild;
async Task<IInviteMetadata> IGuildChannel.CreateInvite(int? maxAge, int? maxUses, bool isTemporary, bool withXkcd) async Task<IInviteMetadata> IGuildChannel.CreateInvite(int? maxAge, int? maxUses, bool isTemporary, bool withXkcd)
=> await CreateInvite(maxAge, maxUses, isTemporary, withXkcd).ConfigureAwait(false); => await CreateInvite(maxAge, maxUses, isTemporary, withXkcd).ConfigureAwait(false);
async Task<IEnumerable<IInviteMetadata>> IGuildChannel.GetInvites() async Task<IEnumerable<IInviteMetadata>> IGuildChannel.GetInvites()
=> await GetInvites().ConfigureAwait(false); => await GetInvites().ConfigureAwait(false);
async Task<IEnumerable<IGuildUser>> IGuildChannel.GetUsers() async Task<IEnumerable<IGuildUser>> IGuildChannel.GetUsers()
=> await GetUsers().ConfigureAwait(false);
async Task<IGuildUser> IGuildChannel.GetUser(ulong id)
=> await GetUser(id).ConfigureAwait(false);
=> await GetUsersInternal().ConfigureAwait(false);
async Task<IEnumerable<IUser>> IChannel.GetUsers() async Task<IEnumerable<IUser>> IChannel.GetUsers()
=> await GetUsers().ConfigureAwait(false);
=> await GetUsersInternal().ConfigureAwait(false);
async Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
=> await GetUsersInternal(limit, offset).ConfigureAwait(false);
async Task<IGuildUser> IGuildChannel.GetUser(ulong id)
=> await GetUserInternal(id).ConfigureAwait(false);
async Task<IUser> IChannel.GetUser(ulong id) async Task<IUser> IChannel.GetUser(ulong id)
=> await GetUser(id).ConfigureAwait(false);
=> await GetUserInternal(id).ConfigureAwait(false);
} }
} }

+ 16
- 3
src/Discord.Net/Rest/Entities/Channels/TextChannel.cs View File

@@ -39,19 +39,27 @@ namespace Discord.Rest
Update(model); Update(model);
} }


public override async Task<GuildUser> GetUser(ulong id)
/// <summary> Gets a user in this channel with the given id. </summary>
public async Task<GuildUser> GetUser(ulong id)
{ {
var user = await Guild.GetUser(id).ConfigureAwait(false); var user = await Guild.GetUser(id).ConfigureAwait(false);
if (user != null && Permissions.GetValue(Permissions.ResolveChannel(user, this, user.GuildPermissions.RawValue), ChannelPermission.ReadMessages)) if (user != null && Permissions.GetValue(Permissions.ResolveChannel(user, this, user.GuildPermissions.RawValue), ChannelPermission.ReadMessages))
return user; return user;
return null; return null;
} }
public override async Task<IEnumerable<GuildUser>> GetUsers()
/// <summary> Gets all users in this channel. </summary>
public async Task<IEnumerable<GuildUser>> GetUsers()
{ {
var users = await Guild.GetUsers().ConfigureAwait(false); var users = await Guild.GetUsers().ConfigureAwait(false);
return users.Where(x => Permissions.GetValue(Permissions.ResolveChannel(x, this, x.GuildPermissions.RawValue), ChannelPermission.ReadMessages)); return users.Where(x => Permissions.GetValue(Permissions.ResolveChannel(x, this, x.GuildPermissions.RawValue), ChannelPermission.ReadMessages));
} }
/// <summary> Gets a paginated collection of users in this channel. </summary>
public async Task<IEnumerable<GuildUser>> GetUsers(int limit, int offset)
{
var users = await Guild.GetUsers(limit, offset).ConfigureAwait(false);
return users.Where(x => Permissions.GetValue(Permissions.ResolveChannel(x, this, x.GuildPermissions.RawValue), ChannelPermission.ReadMessages));
}

/// <inheritdoc /> /// <inheritdoc />
public async Task<IEnumerable<Message>> GetMessages(int limit = DiscordConfig.MaxMessagesPerBatch) public async Task<IEnumerable<Message>> GetMessages(int limit = DiscordConfig.MaxMessagesPerBatch)
{ {
@@ -107,6 +115,11 @@ namespace Discord.Rest


private string DebuggerDisplay => $"{Name} ({Id}, Text)"; private string DebuggerDisplay => $"{Name} ({Id}, Text)";



protected override Task<GuildUser> GetUserInternal(ulong id) => GetUser(id);
protected override Task<IEnumerable<GuildUser>> GetUsersInternal() => GetUsers();
protected override Task<IEnumerable<GuildUser>> GetUsersInternal(int limit, int offset) => GetUsers(limit, offset);

IEnumerable<IMessage> IMessageChannel.CachedMessages => Array.Empty<Message>(); IEnumerable<IMessage> IMessageChannel.CachedMessages => Array.Empty<Message>();


Task<IMessage> IMessageChannel.GetCachedMessage(ulong id) Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)


+ 3
- 2
src/Discord.Net/Rest/Entities/Channels/VoiceChannel.cs View File

@@ -34,8 +34,9 @@ namespace Discord.Rest
Update(model); Update(model);
} }


public override Task<GuildUser> GetUser(ulong id) { throw new NotSupportedException(); }
public override Task<IEnumerable<GuildUser>> GetUsers() { throw new NotSupportedException(); }
protected override Task<GuildUser> GetUserInternal(ulong id) { throw new NotSupportedException(); }
protected override Task<IEnumerable<GuildUser>> GetUsersInternal() { throw new NotSupportedException(); }
protected override Task<IEnumerable<GuildUser>> GetUsersInternal(int limit, int offset) { throw new NotSupportedException(); }


private string DebuggerDisplay => $"{Name} ({Id}, Voice)"; private string DebuggerDisplay => $"{Name} ({Id}, Voice)";
} }


+ 2
- 0
src/Discord.Net/WebSocket/Entities/Channels/DMChannel.cs View File

@@ -124,6 +124,8 @@ namespace Discord.WebSocket


Task<IEnumerable<IUser>> IChannel.GetUsers() Task<IEnumerable<IUser>> IChannel.GetUsers()
=> Task.FromResult(Users); => Task.FromResult(Users);
Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
=> Task.FromResult(Users.Skip(offset).Take(limit));
Task<IUser> IChannel.GetUser(ulong id) Task<IUser> IChannel.GetUser(ulong id)
=> Task.FromResult(GetUser(id)); => Task.FromResult(GetUser(id));
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id) Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)


+ 2
- 0
src/Discord.Net/WebSocket/Entities/Channels/GuildChannel.cs View File

@@ -147,6 +147,8 @@ namespace Discord.WebSocket
=> Task.FromResult<IGuildUser>(GetUser(id)); => Task.FromResult<IGuildUser>(GetUser(id));
Task<IEnumerable<IUser>> IChannel.GetUsers() Task<IEnumerable<IUser>> IChannel.GetUsers()
=> Task.FromResult<IEnumerable<IUser>>(Users); => Task.FromResult<IEnumerable<IUser>>(Users);
Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
=> Task.FromResult<IEnumerable<IUser>>(Users.Skip(offset).Take(limit));
Task<IUser> IChannel.GetUser(ulong id) Task<IUser> IChannel.GetUser(ulong id)
=> Task.FromResult<IUser>(GetUser(id)); => Task.FromResult<IUser>(GetUser(id));
Task IUpdateable.Update() Task IUpdateable.Update()


Loading…
Cancel
Save