Browse Source

Removed SessionsService

tags/docs-0.9
RogueException 9 years ago
parent
commit
166faaf28a
1 changed files with 0 additions and 83 deletions
  1. +0
    -83
      src/Discord.Net.Sessions/SessionsService.cs

+ 0
- 83
src/Discord.Net.Sessions/SessionsService.cs View File

@@ -1,83 +0,0 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Discord.Sessions
{
public class SessionsService : IService
{
private static readonly DualChannelPermissions _ownerPerm = new DualChannelPermissions() { ReadMessages = true, ManageChannel = true };
private static readonly DualChannelPermissions _memberPerm = new DualChannelPermissions() { ReadMessages = true };
private static readonly DualChannelPermissions _everyonePerm = new DualChannelPermissions() { ReadMessages = false };

private DiscordClient _client;

public void Install(DiscordClient client)
{
_client = client;
}

public IEnumerable<Channel> GetSessions(Server server)
=> server.TextChannels.Where(x => x.Name != "" && x.Name[0] == '!');

public async Task<Channel> CreateSession(Server server, string name, bool includeVoice, User owner)
{
name = '!' + name;
Channel textChannel = await _client.CreateChannel(server, name, ChannelType.Text);
Channel voiceChannel = includeVoice ? await _client.CreateChannel(server, name, ChannelType.Voice) : null;

//Take away read from everyone
await _client.SetChannelPermissions(textChannel, server.EveryoneRole, _everyonePerm);
await _client.SetChannelPermissions(textChannel, owner, _ownerPerm);

return textChannel;
}
public async Task DestroySession(Channel channel)
{
if (channel == null) throw new ArgumentNullException(nameof(channel));
CheckSession(channel);

await _client.DeleteChannel(channel);
}
public Task JoinSession(Channel channel, User user)
{
if (channel == null) throw new ArgumentNullException(nameof(channel));
if (user == null) throw new ArgumentNullException(nameof(user));
CheckSession(channel);

return _client.SetChannelPermissions(channel, user, _memberPerm);
}
public async Task LeaveSession(Channel channel, User user)
{
if (channel == null) throw new ArgumentNullException(nameof(channel));
if (user == null) throw new ArgumentNullException(nameof(user));
CheckSession(channel);

if (IsOwner(channel, user))
await DestroySession(channel);
else
await _client.RemoveChannelPermissions(channel, user);
}

private bool IsSession(Channel channel)
=> channel.Name == "" && channel.Name[0] == '!';
private void CheckSession(Channel channel)
{
if (!IsSession(channel))
throw new InvalidOperationException("The provided channel is not a session.");
}
private bool IsOwner(Channel channel, User user)
=> _client.GetChannelPermissions(channel, user).ManageMessages == true;
/*private IEnumerable<string> GetPermissionUsers(Channel channel)
{
return channel.PermissionOverwrites
.Where(x => x.TargetType == PermissionTarget.User && x.Allow.Text_ReadMessages)
.Select(x => x.TargetId);
}*/
}
}

Loading…
Cancel
Save