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;
|
||||||
|
using MareSynchronos.API.Dto.Chat;
|
||||||
using MareSynchronos.API.Dto.Group;
|
using MareSynchronos.API.Dto.Group;
|
||||||
using MareSynchronos.API.Dto.User;
|
using MareSynchronos.API.Dto.User;
|
||||||
|
|
||||||
@@ -16,6 +18,8 @@ public interface IMareHub
|
|||||||
|
|
||||||
Task Client_GroupChangePermissions(GroupPermissionDto groupPermission);
|
Task Client_GroupChangePermissions(GroupPermissionDto groupPermission);
|
||||||
|
|
||||||
|
Task Client_GroupChatMsg(GroupChatMsgDto groupChatMsgDto);
|
||||||
|
|
||||||
Task Client_GroupDelete(GroupDto groupDto);
|
Task Client_GroupDelete(GroupDto groupDto);
|
||||||
|
|
||||||
Task Client_GroupPairChangePermissions(GroupPairUserPermissionDto permissionDto);
|
Task Client_GroupPairChangePermissions(GroupPairUserPermissionDto permissionDto);
|
||||||
@@ -36,6 +40,8 @@ public interface IMareHub
|
|||||||
|
|
||||||
Task Client_UserAddClientPair(UserPairDto dto);
|
Task Client_UserAddClientPair(UserPairDto dto);
|
||||||
|
|
||||||
|
Task Client_UserChatMsg(UserChatMsgDto chatMsgDto);
|
||||||
|
|
||||||
Task Client_UserReceiveCharacterData(OnlineUserCharaDataDto dataDto);
|
Task Client_UserReceiveCharacterData(OnlineUserCharaDataDto dataDto);
|
||||||
|
|
||||||
Task Client_UserReceiveUploadStatus(UserDto dto);
|
Task Client_UserReceiveUploadStatus(UserDto dto);
|
||||||
@@ -64,6 +70,8 @@ public interface IMareHub
|
|||||||
|
|
||||||
Task<bool> GroupChangePassword(GroupPasswordDto groupPassword);
|
Task<bool> GroupChangePassword(GroupPasswordDto groupPassword);
|
||||||
|
|
||||||
|
Task GroupChatSendMsg(GroupDto group, ChatMessage message);
|
||||||
|
|
||||||
Task GroupClear(GroupDto group);
|
Task GroupClear(GroupDto group);
|
||||||
|
|
||||||
Task<GroupPasswordDto> GroupCreate();
|
Task<GroupPasswordDto> GroupCreate();
|
||||||
@@ -91,6 +99,8 @@ public interface IMareHub
|
|||||||
|
|
||||||
Task UserAddPair(UserDto user);
|
Task UserAddPair(UserDto user);
|
||||||
|
|
||||||
|
Task UserChatSendMsg(UserDto user, ChatMessage message);
|
||||||
|
|
||||||
Task UserDelete();
|
Task UserDelete();
|
||||||
|
|
||||||
Task<List<OnlineUserIdentDto>> UserGetOnlinePairs();
|
Task<List<OnlineUserIdentDto>> UserGetOnlinePairs();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using MareSynchronos.API.Data.Enum;
|
using MareSynchronos.API.Data.Enum;
|
||||||
using MareSynchronos.API.Dto;
|
using MareSynchronos.API.Dto;
|
||||||
|
using MareSynchronos.API.Dto.Chat;
|
||||||
using MareSynchronos.API.Dto.Group;
|
using MareSynchronos.API.Dto.Group;
|
||||||
using MareSynchronos.API.Dto.User;
|
using MareSynchronos.API.Dto.User;
|
||||||
|
|
||||||
@@ -11,6 +12,8 @@ public interface IMareHubClient : IMareHub
|
|||||||
|
|
||||||
void OnGroupChangePermissions(Action<GroupPermissionDto> act);
|
void OnGroupChangePermissions(Action<GroupPermissionDto> act);
|
||||||
|
|
||||||
|
void OnGroupChatMsg(Action<GroupChatMsgDto> groupChatMsgDto);
|
||||||
|
|
||||||
void OnGroupDelete(Action<GroupDto> act);
|
void OnGroupDelete(Action<GroupDto> act);
|
||||||
|
|
||||||
void OnGroupPairChangePermissions(Action<GroupPairUserPermissionDto> act);
|
void OnGroupPairChangePermissions(Action<GroupPairUserPermissionDto> act);
|
||||||
@@ -31,6 +34,8 @@ public interface IMareHubClient : IMareHub
|
|||||||
|
|
||||||
void OnUserAddClientPair(Action<UserPairDto> act);
|
void OnUserAddClientPair(Action<UserPairDto> act);
|
||||||
|
|
||||||
|
void OnUserChatMsg(Action<UserChatMsgDto> chatMsgDto);
|
||||||
|
|
||||||
void OnUserReceiveCharacterData(Action<OnlineUserCharaDataDto> act);
|
void OnUserReceiveCharacterData(Action<OnlineUserCharaDataDto> act);
|
||||||
|
|
||||||
void OnUserReceiveUploadStatus(Action<UserDto> act);
|
void OnUserReceiveUploadStatus(Action<UserDto> act);
|
||||||
|
|||||||
Reference in New Issue
Block a user