Chat message APIs
This commit is contained in:
11
MareSynchronosAPI/Data/ChatMessage.cs
Normal file
11
MareSynchronosAPI/Data/ChatMessage.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using MessagePack;
|
||||
|
||||
namespace MareSynchronos.API.Data;
|
||||
|
||||
[MessagePackObject(keyAsPropertyName: true)]
|
||||
public record ChatMessage
|
||||
{
|
||||
public string SenderName { get; set; } = string.Empty;
|
||||
public uint SenderHomeWorldId { get; set; } = 0;
|
||||
public byte[] PayloadContent { get; set; } = [];
|
||||
}
|
||||
14
MareSynchronosAPI/Data/SignedChatMessage.cs
Normal file
14
MareSynchronosAPI/Data/SignedChatMessage.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using MessagePack;
|
||||
|
||||
namespace MareSynchronos.API.Data;
|
||||
|
||||
[MessagePackObject(keyAsPropertyName: true)]
|
||||
public record SignedChatMessage(ChatMessage Message, UserData Sender) : ChatMessage(Message)
|
||||
{
|
||||
// Sender and timestamp are set by the server
|
||||
public UserData Sender { get; set; } = Sender;
|
||||
public long Timestamp { get; set; } = 0;
|
||||
// Signature is generated by the server as SHA256(Sender.UID | Timestamp | Destination | Message)
|
||||
// Where Destination is either the receiver's UID, or the group GID
|
||||
public string Signature { get; set; } = string.Empty;
|
||||
}
|
||||
13
MareSynchronosAPI/Dto/Chat/GroupChatMsgDto.cs
Normal file
13
MareSynchronosAPI/Dto/Chat/GroupChatMsgDto.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using MareSynchronos.API.Data;
|
||||
using MareSynchronos.API.Dto.Group;
|
||||
using MareSynchronos.API.Dto.User;
|
||||
using MessagePack;
|
||||
|
||||
namespace MareSynchronos.API.Dto.Chat;
|
||||
|
||||
[MessagePackObject(keyAsPropertyName: true)]
|
||||
public record GroupChatMsgDto(GroupDto Group, SignedChatMessage Message)
|
||||
{
|
||||
public GroupDto Group = Group;
|
||||
public SignedChatMessage Message = Message;
|
||||
}
|
||||
11
MareSynchronosAPI/Dto/Chat/UserChatMsgDto.cs
Normal file
11
MareSynchronosAPI/Dto/Chat/UserChatMsgDto.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using MareSynchronos.API.Data;
|
||||
using MareSynchronos.API.Dto.User;
|
||||
using MessagePack;
|
||||
|
||||
namespace MareSynchronos.API.Dto.Chat;
|
||||
|
||||
[MessagePackObject(keyAsPropertyName: true)]
|
||||
public record UserChatMsgDto(SignedChatMessage Message)
|
||||
{
|
||||
public SignedChatMessage Message = Message;
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
using MareSynchronos.API.Data.Enum;
|
||||
using MareSynchronos.API.Data;
|
||||
using MareSynchronos.API.Data.Enum;
|
||||
using MareSynchronos.API.Dto;
|
||||
using MareSynchronos.API.Dto.Chat;
|
||||
using MareSynchronos.API.Dto.Group;
|
||||
using MareSynchronos.API.Dto.User;
|
||||
|
||||
@@ -16,6 +18,8 @@ public interface IMareHub
|
||||
|
||||
Task Client_GroupChangePermissions(GroupPermissionDto groupPermission);
|
||||
|
||||
Task Client_GroupChatMsg(GroupChatMsgDto groupChatMsgDto);
|
||||
|
||||
Task Client_GroupDelete(GroupDto groupDto);
|
||||
|
||||
Task Client_GroupPairChangePermissions(GroupPairUserPermissionDto permissionDto);
|
||||
@@ -36,6 +40,8 @@ public interface IMareHub
|
||||
|
||||
Task Client_UserAddClientPair(UserPairDto dto);
|
||||
|
||||
Task Client_UserChatMsg(UserChatMsgDto chatMsgDto);
|
||||
|
||||
Task Client_UserReceiveCharacterData(OnlineUserCharaDataDto dataDto);
|
||||
|
||||
Task Client_UserReceiveUploadStatus(UserDto dto);
|
||||
@@ -64,6 +70,8 @@ public interface IMareHub
|
||||
|
||||
Task<bool> GroupChangePassword(GroupPasswordDto groupPassword);
|
||||
|
||||
Task GroupChatSendMsg(GroupDto group, ChatMessage message);
|
||||
|
||||
Task GroupClear(GroupDto group);
|
||||
|
||||
Task<GroupPasswordDto> GroupCreate();
|
||||
@@ -91,6 +99,8 @@ public interface IMareHub
|
||||
|
||||
Task UserAddPair(UserDto user);
|
||||
|
||||
Task UserChatSendMsg(UserDto user, ChatMessage message);
|
||||
|
||||
Task UserDelete();
|
||||
|
||||
Task<List<OnlineUserIdentDto>> UserGetOnlinePairs();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using MareSynchronos.API.Data.Enum;
|
||||
using MareSynchronos.API.Dto;
|
||||
using MareSynchronos.API.Dto.Chat;
|
||||
using MareSynchronos.API.Dto.Group;
|
||||
using MareSynchronos.API.Dto.User;
|
||||
|
||||
@@ -11,6 +12,8 @@ public interface IMareHubClient : IMareHub
|
||||
|
||||
void OnGroupChangePermissions(Action<GroupPermissionDto> act);
|
||||
|
||||
void OnGroupChatMsg(Action<GroupChatMsgDto> groupChatMsgDto);
|
||||
|
||||
void OnGroupDelete(Action<GroupDto> act);
|
||||
|
||||
void OnGroupPairChangePermissions(Action<GroupPairUserPermissionDto> act);
|
||||
@@ -31,6 +34,8 @@ public interface IMareHubClient : IMareHub
|
||||
|
||||
void OnUserAddClientPair(Action<UserPairDto> act);
|
||||
|
||||
void OnUserChatMsg(Action<UserChatMsgDto> chatMsgDto);
|
||||
|
||||
void OnUserReceiveCharacterData(Action<OnlineUserCharaDataDto> act);
|
||||
|
||||
void OnUserReceiveUploadStatus(Action<UserDto> act);
|
||||
|
||||
Reference in New Issue
Block a user