Compare commits
8 Commits
65522567a5
...
master
Author | SHA1 | Date | |
---|---|---|---|
2469da926d | |||
0b5b4b71a5 | |||
f807448e03 | |||
e7a3b2a367 | |||
78bab88165 | |||
a3f3f90817 | |||
8183678bf0 | |||
23d407b760 |
@ -1,9 +0,0 @@
|
|||||||
namespace HermesSocketLibrary.Requests
|
|
||||||
{
|
|
||||||
public interface IRequest
|
|
||||||
{
|
|
||||||
string Name { get; }
|
|
||||||
|
|
||||||
Task<RequestResult> Grant(string sender, IDictionary<string, object>? data);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
using HermesSocketLibrary.Socket.Data;
|
|
||||||
|
|
||||||
namespace HermesSocketLibrary.Requests
|
|
||||||
{
|
|
||||||
public interface IRequestManager
|
|
||||||
{
|
|
||||||
Task<RequestResult> Grant(string sender, RequestMessage? message);
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,7 +2,7 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class EmoteInfo
|
public class EmoteInfo
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,8 +2,9 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class Group
|
public class Group
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public required string UserId { get; set; }
|
||||||
|
public required string Name { get; set; }
|
||||||
public int Priority { get; set; }
|
public int Priority { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,9 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class GroupChatter
|
public class GroupChatter
|
||||||
{
|
{
|
||||||
public string GroupId { get; set; }
|
public required string UserId { get; set; }
|
||||||
|
public required string GroupId { get; set; }
|
||||||
public long ChatterId { get; set;}
|
public long ChatterId { get; set;}
|
||||||
|
public required string ChatterLabel { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,8 +2,8 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class GroupInfo
|
public class GroupInfo
|
||||||
{
|
{
|
||||||
public IEnumerable<Group> Groups { get; set; }
|
public required IEnumerable<Group> Groups { get; set; }
|
||||||
public IEnumerable<GroupChatter> GroupChatters { get; set; }
|
public required IEnumerable<GroupChatter> GroupChatters { get; set; }
|
||||||
public IEnumerable<GroupPermission> GroupPermissions { get; set; }
|
public required IEnumerable<GroupPermission> GroupPermissions { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,9 +2,10 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class GroupPermission
|
public class GroupPermission
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string GroupId { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string Path { get; set; }
|
public Guid GroupId { get; set; }
|
||||||
|
public required string Path { get; set; }
|
||||||
public bool? Allow { get; set; }
|
public bool? Allow { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
12
Requests/Messages/Policy.cs
Normal file
12
Requests/Messages/Policy.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace HermesSocketServer.Messages
|
||||||
|
{
|
||||||
|
public class Policy
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public required string UserId { get; set; }
|
||||||
|
public Guid GroupId { get; set; }
|
||||||
|
public required string Path { get; set; }
|
||||||
|
public int Usage { get; set; }
|
||||||
|
public int Span { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -2,8 +2,10 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class RedeemableAction
|
public class RedeemableAction
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string Type { get; set; }
|
public required string Name { get; set; }
|
||||||
public IDictionary<string, string> Data { get; set; }
|
public required string Type { get; set; }
|
||||||
|
public required bool HasMessage { get; set; }
|
||||||
|
public required IDictionary<string, string> Data { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,9 +2,10 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class Redemption
|
public class Redemption
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string RedemptionId { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string ActionName { get; set; }
|
public required string RedemptionId { get; set; }
|
||||||
|
public required string ActionName { get; set; }
|
||||||
public int Order { get; set; }
|
public int Order { get; set; }
|
||||||
public bool State { get; set; }
|
public bool State { get; set; }
|
||||||
}
|
}
|
||||||
|
8
Requests/Messages/TTSVoice.cs
Normal file
8
Requests/Messages/TTSVoice.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
namespace HermesSocketLibrary.Requests.Messages
|
||||||
|
{
|
||||||
|
public class TTSVoice
|
||||||
|
{
|
||||||
|
public required string Id { get; set; }
|
||||||
|
public required string Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
9
Requests/Messages/TTSVoiceState.cs
Normal file
9
Requests/Messages/TTSVoiceState.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace HermesSocketLibrary.Requests.Messages
|
||||||
|
{
|
||||||
|
public class TTSVoiceState
|
||||||
|
{
|
||||||
|
public required string Id { get; set; }
|
||||||
|
public required string UserId { get; set; }
|
||||||
|
public bool Enabled { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -5,17 +5,12 @@ namespace HermesSocketLibrary.Requests.Messages
|
|||||||
{
|
{
|
||||||
public class TTSWordFilter
|
public class TTSWordFilter
|
||||||
{
|
{
|
||||||
public string? Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string? Search { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string? Replace { get; set; }
|
public required string Search { get; set; }
|
||||||
|
public required string Replace { get; set; }
|
||||||
|
public int Flag { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public Regex? Regex { get; set; }
|
public Regex? Regex { get; set; }
|
||||||
public bool IsRegex { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public TTSWordFilter()
|
|
||||||
{
|
|
||||||
IsRegex = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,8 +0,0 @@
|
|||||||
namespace HermesSocketLibrary.Requests.Messages
|
|
||||||
{
|
|
||||||
public class VoiceDetails
|
|
||||||
{
|
|
||||||
public string Id { get; set; }
|
|
||||||
public string Name { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
using HermesSocketLibrary.Socket.Data;
|
|
||||||
using Serilog;
|
|
||||||
|
|
||||||
namespace HermesSocketLibrary.Requests
|
|
||||||
{
|
|
||||||
public class RequestManager : IRequestManager
|
|
||||||
{
|
|
||||||
private readonly IDictionary<string, IRequest> _requests;
|
|
||||||
private readonly ILogger _logger;
|
|
||||||
|
|
||||||
|
|
||||||
public RequestManager(IEnumerable<IRequest> requests, ILogger logger)
|
|
||||||
{
|
|
||||||
_logger = logger;
|
|
||||||
|
|
||||||
_requests = requests.ToDictionary(r => r.Name, r => r);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<RequestResult> Grant(string sender, RequestMessage? message)
|
|
||||||
{
|
|
||||||
if (message == null || message.Type == null)
|
|
||||||
return new RequestResult(false, null);
|
|
||||||
|
|
||||||
if (!_requests.TryGetValue(message.Type, out IRequest? request) || request == null)
|
|
||||||
{
|
|
||||||
_logger.Warning($"Did not find request type '{message.Type}'.");
|
|
||||||
return new RequestResult(false, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return await request.Grant(sender, message.Data);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.Error(e, $"Failed to grant a request of type '{message.Type}'.");
|
|
||||||
}
|
|
||||||
return new RequestResult(false, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
namespace HermesSocketLibrary.Requests
|
|
||||||
{
|
|
||||||
public class RequestResult
|
|
||||||
{
|
|
||||||
public bool Success;
|
|
||||||
public object? Result;
|
|
||||||
public bool NotifyClientsOnAccount;
|
|
||||||
|
|
||||||
public RequestResult(bool success, object? result, bool notifyClientsOnAccount = true)
|
|
||||||
{
|
|
||||||
Success = success;
|
|
||||||
Result = result;
|
|
||||||
NotifyClientsOnAccount = notifyClientsOnAccount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,7 +2,7 @@ namespace HermesSocketLibrary.Socket.Data
|
|||||||
{
|
{
|
||||||
public class ChatterMessage
|
public class ChatterMessage
|
||||||
{
|
{
|
||||||
public long Id { get; set; }
|
public required long Id { get; set; }
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,19 +1,15 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace HermesSocketLibrary.Socket.Data
|
namespace HermesSocketLibrary.Socket.Data
|
||||||
{
|
{
|
||||||
public class Connection
|
public class Connection
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string Type { get; set; }
|
public required string Name { get; set; }
|
||||||
public string ClientId { get; set; }
|
public required string Type { get; set; }
|
||||||
public string AccessToken { get; set; }
|
public required string ClientId { get; set; }
|
||||||
public string GrantType { get; set; }
|
public required string AccessToken { get; set; }
|
||||||
public string Scope { get; set; }
|
public required string GrantType { get; set; }
|
||||||
public DateTime ExpiresIn { get; set; }
|
public required string Scope { get; set; }
|
||||||
|
public DateTime ExpiresAt { get; set; }
|
||||||
public bool Default { get; set; }
|
public bool Default { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,6 @@ namespace HermesSocketLibrary.Socket.Data
|
|||||||
{
|
{
|
||||||
public class EmoteDetailsMessage
|
public class EmoteDetailsMessage
|
||||||
{
|
{
|
||||||
public IDictionary<string, string> Emotes { get; set; }
|
public required IDictionary<string, string> Emotes { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,10 +2,10 @@ namespace HermesSocketLibrary.Socket.Data
|
|||||||
{
|
{
|
||||||
public class EmoteUsageMessage
|
public class EmoteUsageMessage
|
||||||
{
|
{
|
||||||
public string MessageId { get; set; }
|
public required string MessageId { get; set; }
|
||||||
public DateTime DateTime { get; set; }
|
public DateTime DateTime { get; set; }
|
||||||
public long BroadcasterId { get; set; }
|
public long BroadcasterId { get; set; }
|
||||||
public ICollection<string> Emotes { get; set; }
|
public required ICollection<string> Emotes { get; set; }
|
||||||
public long ChatterId { get; set; }
|
public long ChatterId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,10 +2,10 @@ namespace HermesSocketLibrary.Socket.Data
|
|||||||
{
|
{
|
||||||
public class HermesLoginMessage
|
public class HermesLoginMessage
|
||||||
{
|
{
|
||||||
public string ApiKey { get; set; }
|
public required string ApiKey { get; set; }
|
||||||
public string Password { get; set; }
|
|
||||||
public bool WebLogin { get; set; }
|
public bool WebLogin { get; set; }
|
||||||
public int? MajorVersion { get; set; }
|
public int MajorVersion { get; set; }
|
||||||
public int? MinorVersion { get; set; }
|
public int MinorVersion { get; set; }
|
||||||
|
public int? PatchVersion { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,17 +1,25 @@
|
|||||||
|
using HermesSocketLibrary.Requests.Messages;
|
||||||
|
|
||||||
namespace HermesSocketLibrary.Socket.Data
|
namespace HermesSocketLibrary.Socket.Data
|
||||||
{
|
{
|
||||||
public class LoginAckMessage
|
public class LoginAckMessage
|
||||||
{
|
{
|
||||||
public string UserId { get; set; }
|
public string UserId { get; set; }
|
||||||
|
public string ProviderAccountId { get; set; }
|
||||||
|
public string SessionId { get; set; }
|
||||||
|
public string UserName { get; set; }
|
||||||
public bool AnotherClient { get; set; }
|
public bool AnotherClient { get; set; }
|
||||||
public long? OwnerId { get; set; }
|
public long? OwnerId { get; set; }
|
||||||
public bool Admin { get; set; }
|
public bool Admin { get; set; }
|
||||||
public bool WebLogin { get; set; }
|
public bool WebLogin { get; set; }
|
||||||
|
public bool Slave { get; set; }
|
||||||
|
|
||||||
public string DefaultTTSVoice { get; set; }
|
public string DefaultTTSVoice { get; set; }
|
||||||
public IEnumerable<string> EnabledTTSVoices { get; set; }
|
public IList<string> EnabledTTSVoices { get; set; }
|
||||||
public IDictionary<string, string> TTSVoicesAvailable { get; set; }
|
public IDictionary<string, string> TTSVoicesAvailable { get; set; }
|
||||||
|
|
||||||
public Connection[] Connections { get; set; }
|
public IEnumerable<TTSWordFilter> WordFilters { get; set; }
|
||||||
|
|
||||||
|
public IList<Connection> Connections { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,5 +5,6 @@ namespace HermesSocketLibrary.Socket.Data
|
|||||||
public RequestMessage? Request { get; set; }
|
public RequestMessage? Request { get; set; }
|
||||||
public string? Nounce { get; set; }
|
public string? Nounce { get; set; }
|
||||||
public object? Data { get; set; }
|
public object? Data { get; set; }
|
||||||
|
public string? Error { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,8 +2,8 @@ namespace HermesSocketLibrary.Socket.Data
|
|||||||
{
|
{
|
||||||
public class RequestMessage
|
public class RequestMessage
|
||||||
{
|
{
|
||||||
public string RequestId { get; set; }
|
public string? RequestId { get; set; }
|
||||||
public string? Type { get; set; }
|
public required string Type { get; set; }
|
||||||
public IDictionary<string, object>? Data { get; set; }
|
public IDictionary<string, object>? Data { get; set; }
|
||||||
public string? Nounce { get; set; }
|
public string? Nounce { get; set; }
|
||||||
}
|
}
|
||||||
|
7
Socket/Data/SlaveMessage.cs
Normal file
7
Socket/Data/SlaveMessage.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
namespace HermesSocketLibrary.Socket.Data
|
||||||
|
{
|
||||||
|
public class SlaveMessage
|
||||||
|
{
|
||||||
|
public required bool Slave { get; set; }
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user