Removed SessionsService

This commit is contained in:
RogueException
2015-11-22 17:10:06 -04:00
parent 77f84fb15d
commit 166faaf28a

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);
}*/
}
}