From 381f9a48085c7feb4acb7d00658d06d555c1dd96 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Fri, 10 Feb 2023 12:30:43 +0100 Subject: [PATCH] Messagepack (#12) * add messagepack attributes * fix isnullorempty * bump api version --------- Co-authored-by: rootdarkarchon --- MareSynchronosAPI/Data/CharacterData.cs | 2 ++ MareSynchronosAPI/Data/FileReplacementData.cs | 5 ++++- MareSynchronosAPI/Data/GroupData.cs | 8 ++++++-- MareSynchronosAPI/Data/HashableDataBase.cs | 1 + MareSynchronosAPI/Data/UserData.cs | 8 ++++++-- MareSynchronosAPI/Dto/ConnectionDto.cs | 3 +++ MareSynchronosAPI/Dto/Files/DownloadFileDto.cs | 5 ++++- MareSynchronosAPI/Dto/Files/ForbiddenUploadsDto.cs | 5 ++++- MareSynchronosAPI/Dto/Files/UploadFileDto.cs | 5 ++++- MareSynchronosAPI/Dto/Group/BannedGroupUserDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupInfoDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupPairDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs | 2 ++ MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs | 2 ++ MareSynchronosAPI/Dto/SystemInfoDto.cs | 5 ++++- MareSynchronosAPI/Dto/User/OnlineUserCharaDataDto.cs | 2 ++ MareSynchronosAPI/Dto/User/OnlineUserIdentDto.cs | 2 ++ MareSynchronosAPI/Dto/User/UserCharaDataMessageDto.cs | 2 ++ MareSynchronosAPI/Dto/User/UserDto.cs | 2 ++ MareSynchronosAPI/Dto/User/UserPairDto.cs | 2 ++ MareSynchronosAPI/Dto/User/UserPermissionsDto.cs | 2 ++ MareSynchronosAPI/MareSynchronos.API.csproj | 1 + MareSynchronosAPI/SignalR/IMareHub.cs | 2 +- 28 files changed, 72 insertions(+), 10 deletions(-) diff --git a/MareSynchronosAPI/Data/CharacterData.cs b/MareSynchronosAPI/Data/CharacterData.cs index f0d50fe..2ed8e65 100644 --- a/MareSynchronosAPI/Data/CharacterData.cs +++ b/MareSynchronosAPI/Data/CharacterData.cs @@ -1,7 +1,9 @@ using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Data; +[MessagePackObject(keyAsPropertyName: true)] public class CharacterData : HashableDataBase { public Dictionary> FileReplacements { get; set; } = new(); diff --git a/MareSynchronosAPI/Data/FileReplacementData.cs b/MareSynchronosAPI/Data/FileReplacementData.cs index 81586c5..5856f45 100644 --- a/MareSynchronosAPI/Data/FileReplacementData.cs +++ b/MareSynchronosAPI/Data/FileReplacementData.cs @@ -1,5 +1,8 @@ -namespace MareSynchronos.API.Data; +using MessagePack; +namespace MareSynchronos.API.Data; + +[MessagePackObject(keyAsPropertyName: true)] public class FileReplacementData : HashableDataBase { public string[] GamePaths { get; set; } = Array.Empty(); diff --git a/MareSynchronosAPI/Data/GroupData.cs b/MareSynchronosAPI/Data/GroupData.cs index c7771ca..877bb44 100644 --- a/MareSynchronosAPI/Data/GroupData.cs +++ b/MareSynchronosAPI/Data/GroupData.cs @@ -1,6 +1,10 @@ -namespace MareSynchronos.API.Data; +using MessagePack; +namespace MareSynchronos.API.Data; + +[MessagePackObject(keyAsPropertyName: true)] public record GroupData(string GID, string? Alias = null) { - public string AliasOrGID => Alias ?? GID; + [IgnoreMember] + public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias; } diff --git a/MareSynchronosAPI/Data/HashableDataBase.cs b/MareSynchronosAPI/Data/HashableDataBase.cs index b620bae..1ebb85b 100644 --- a/MareSynchronosAPI/Data/HashableDataBase.cs +++ b/MareSynchronosAPI/Data/HashableDataBase.cs @@ -1,5 +1,6 @@ using System.Security.Cryptography; using System.Text; +using MessagePack; using Newtonsoft.Json; namespace MareSynchronos.API.Data; diff --git a/MareSynchronosAPI/Data/UserData.cs b/MareSynchronosAPI/Data/UserData.cs index a530ae5..3bc74cf 100644 --- a/MareSynchronosAPI/Data/UserData.cs +++ b/MareSynchronosAPI/Data/UserData.cs @@ -1,6 +1,10 @@ -namespace MareSynchronos.API.Data; +using MessagePack; +namespace MareSynchronos.API.Data; + +[MessagePackObject(keyAsPropertyName: true)] public record UserData(string UID, string? Alias = null) { - public string AliasOrUID => Alias ?? UID; + [IgnoreMember] + public string AliasOrUID => string.IsNullOrWhiteSpace(Alias) ? UID : Alias; } \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/ConnectionDto.cs b/MareSynchronosAPI/Dto/ConnectionDto.cs index f582e3b..aeca3d6 100644 --- a/MareSynchronosAPI/Dto/ConnectionDto.cs +++ b/MareSynchronosAPI/Dto/ConnectionDto.cs @@ -1,7 +1,9 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto; +[MessagePackObject(keyAsPropertyName: true)] public record ConnectionDto(UserData User) { public int ServerVersion { get; set; } @@ -10,6 +12,7 @@ public record ConnectionDto(UserData User) public ServerInfo ServerInfo { get; set; } = new(); } +[MessagePackObject(keyAsPropertyName: true)] public record ServerInfo { public string ShardName { get; set; } = string.Empty; diff --git a/MareSynchronosAPI/Dto/Files/DownloadFileDto.cs b/MareSynchronosAPI/Dto/Files/DownloadFileDto.cs index 0775339..d2ffe05 100644 --- a/MareSynchronosAPI/Dto/Files/DownloadFileDto.cs +++ b/MareSynchronosAPI/Dto/Files/DownloadFileDto.cs @@ -1,5 +1,8 @@ -namespace MareSynchronos.API.Dto.Files; +using MessagePack; +namespace MareSynchronos.API.Dto.Files; + +[MessagePackObject(keyAsPropertyName: true)] public record DownloadFileDto : ITransferFileDto { public bool FileExists { get; set; } = true; diff --git a/MareSynchronosAPI/Dto/Files/ForbiddenUploadsDto.cs b/MareSynchronosAPI/Dto/Files/ForbiddenUploadsDto.cs index b601a82..edaa226 100644 --- a/MareSynchronosAPI/Dto/Files/ForbiddenUploadsDto.cs +++ b/MareSynchronosAPI/Dto/Files/ForbiddenUploadsDto.cs @@ -1,5 +1,8 @@ -namespace MareSynchronos.API.Dto.Files; +using MessagePack; +namespace MareSynchronos.API.Dto.Files; + +[MessagePackObject(keyAsPropertyName: true)] public record ForbiddenFileDto { public string Hash { get; set; } = string.Empty; diff --git a/MareSynchronosAPI/Dto/Files/UploadFileDto.cs b/MareSynchronosAPI/Dto/Files/UploadFileDto.cs index a7c4dad..f10b27d 100644 --- a/MareSynchronosAPI/Dto/Files/UploadFileDto.cs +++ b/MareSynchronosAPI/Dto/Files/UploadFileDto.cs @@ -1,5 +1,8 @@ -namespace MareSynchronos.API.Dto.Files; +using MessagePack; +namespace MareSynchronos.API.Dto.Files; + +[MessagePackObject(keyAsPropertyName: true)] public record UploadFileDto : ITransferFileDto { public string Hash { get; set; } = string.Empty; diff --git a/MareSynchronosAPI/Dto/Group/BannedGroupUserDto.cs b/MareSynchronosAPI/Dto/Group/BannedGroupUserDto.cs index f6d5c33..36ed1f9 100644 --- a/MareSynchronosAPI/Dto/Group/BannedGroupUserDto.cs +++ b/MareSynchronosAPI/Dto/Group/BannedGroupUserDto.cs @@ -1,7 +1,9 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record BannedGroupUserDto : GroupPairDto { public BannedGroupUserDto(GroupData group, UserData user, string reason, DateTime bannedOn, string bannedBy) : base(group, user) diff --git a/MareSynchronosAPI/Dto/Group/GroupDto.cs b/MareSynchronosAPI/Dto/Group/GroupDto.cs index cfba14c..5b5b71a 100644 --- a/MareSynchronosAPI/Dto/Group/GroupDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupDto.cs @@ -1,7 +1,9 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupDto(GroupData Group) { public GroupData Group { get; set; } = Group; diff --git a/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs index f63dc38..0591293 100644 --- a/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs @@ -1,8 +1,10 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupFullInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions, GroupUserPermissions GroupUserPermissions, GroupUserInfo GroupUserInfo) : GroupInfoDto(Group, Owner, GroupPermissions) { public GroupUserPermissions GroupUserPermissions { get; set; } = GroupUserPermissions; diff --git a/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs index 4818658..193072b 100644 --- a/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs @@ -1,8 +1,10 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions) : GroupDto(Group) { public GroupPermissions GroupPermissions { get; set; } = GroupPermissions; diff --git a/MareSynchronosAPI/Dto/Group/GroupPairDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairDto.cs index e0e7909..c2e748d 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairDto.cs @@ -1,7 +1,9 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupPairDto(GroupData Group, UserData User) : GroupDto(Group) { public string UID => User.UID; diff --git a/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs index 8eed1f4..5a594df 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs @@ -1,8 +1,10 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupPairFullInfoDto(GroupData Group, UserData User, GroupUserInfo GroupPairStatusInfo, GroupUserPermissions GroupUserPermissions) : GroupPairDto(Group, User) { public GroupUserInfo GroupPairStatusInfo { get; set; } = GroupPairStatusInfo; diff --git a/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs index 389663d..8a37f68 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs @@ -1,6 +1,8 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupPairUserInfoDto(GroupData Group, UserData User, GroupUserInfo GroupUserInfo) : GroupPairDto(Group, User); diff --git a/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs index 432a6ba..d1f152f 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs @@ -1,6 +1,8 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupPairUserPermissionDto(GroupData Group, UserData User, GroupUserPermissions GroupPairPermissions) : GroupPairDto(Group, User); diff --git a/MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs b/MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs index 98c2f81..bcc31f0 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs @@ -1,5 +1,7 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupPasswordDto(GroupData Group, string Password) : GroupDto(Group); diff --git a/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs b/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs index a3fefda..70dbf80 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs @@ -1,6 +1,8 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.Group; +[MessagePackObject(keyAsPropertyName: true)] public record GroupPermissionDto(GroupData Group, GroupPermissions Permissions) : GroupDto(Group); diff --git a/MareSynchronosAPI/Dto/SystemInfoDto.cs b/MareSynchronosAPI/Dto/SystemInfoDto.cs index 6802ad4..eb84f1a 100644 --- a/MareSynchronosAPI/Dto/SystemInfoDto.cs +++ b/MareSynchronosAPI/Dto/SystemInfoDto.cs @@ -1,5 +1,8 @@ -namespace MareSynchronos.API.Dto; +using MessagePack; +namespace MareSynchronos.API.Dto; + +[MessagePackObject(keyAsPropertyName: true)] public record SystemInfoDto { public int OnlineUsers { get; set; } diff --git a/MareSynchronosAPI/Dto/User/OnlineUserCharaDataDto.cs b/MareSynchronosAPI/Dto/User/OnlineUserCharaDataDto.cs index 39e44b7..a4233d5 100644 --- a/MareSynchronosAPI/Dto/User/OnlineUserCharaDataDto.cs +++ b/MareSynchronosAPI/Dto/User/OnlineUserCharaDataDto.cs @@ -1,5 +1,7 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.User; +[MessagePackObject(keyAsPropertyName: true)] public record OnlineUserCharaDataDto(UserData User, CharacterData CharaData) : UserDto(User); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/User/OnlineUserIdentDto.cs b/MareSynchronosAPI/Dto/User/OnlineUserIdentDto.cs index 592fbe2..dbc7129 100644 --- a/MareSynchronosAPI/Dto/User/OnlineUserIdentDto.cs +++ b/MareSynchronosAPI/Dto/User/OnlineUserIdentDto.cs @@ -1,5 +1,7 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.User; +[MessagePackObject(keyAsPropertyName: true)] public record OnlineUserIdentDto(UserData User, string Ident) : UserDto(User); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/User/UserCharaDataMessageDto.cs b/MareSynchronosAPI/Dto/User/UserCharaDataMessageDto.cs index 9f93231..1b33590 100644 --- a/MareSynchronosAPI/Dto/User/UserCharaDataMessageDto.cs +++ b/MareSynchronosAPI/Dto/User/UserCharaDataMessageDto.cs @@ -1,5 +1,7 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.User; +[MessagePackObject(keyAsPropertyName: true)] public record UserCharaDataMessageDto(List Recipients, CharacterData CharaData); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/User/UserDto.cs b/MareSynchronosAPI/Dto/User/UserDto.cs index 114ff60..ce105bf 100644 --- a/MareSynchronosAPI/Dto/User/UserDto.cs +++ b/MareSynchronosAPI/Dto/User/UserDto.cs @@ -1,5 +1,7 @@ using MareSynchronos.API.Data; +using MessagePack; namespace MareSynchronos.API.Dto.User; +[MessagePackObject(keyAsPropertyName: true)] public record UserDto(UserData User); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/User/UserPairDto.cs b/MareSynchronosAPI/Dto/User/UserPairDto.cs index 44fbfe0..3d92ad6 100644 --- a/MareSynchronosAPI/Dto/User/UserPairDto.cs +++ b/MareSynchronosAPI/Dto/User/UserPairDto.cs @@ -1,8 +1,10 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.User; +[MessagePackObject(keyAsPropertyName: true)] public record UserPairDto(UserData User, UserPermissions OwnPermissions, UserPermissions OtherPermissions) : UserDto(User) { public UserPermissions OwnPermissions { get; set; } = OwnPermissions; diff --git a/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs b/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs index 07bec2b..772040b 100644 --- a/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs +++ b/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs @@ -1,6 +1,8 @@ using MareSynchronos.API.Data; using MareSynchronos.API.Data.Enum; +using MessagePack; namespace MareSynchronos.API.Dto.User; +[MessagePackObject(keyAsPropertyName: true)] public record UserPermissionsDto(UserData User, UserPermissions Permissions) : UserDto(User); \ No newline at end of file diff --git a/MareSynchronosAPI/MareSynchronos.API.csproj b/MareSynchronosAPI/MareSynchronos.API.csproj index 4f57cb9..04d7472 100644 --- a/MareSynchronosAPI/MareSynchronos.API.csproj +++ b/MareSynchronosAPI/MareSynchronos.API.csproj @@ -7,6 +7,7 @@ + diff --git a/MareSynchronosAPI/SignalR/IMareHub.cs b/MareSynchronosAPI/SignalR/IMareHub.cs index a4e3669..8ce380a 100644 --- a/MareSynchronosAPI/SignalR/IMareHub.cs +++ b/MareSynchronosAPI/SignalR/IMareHub.cs @@ -8,7 +8,7 @@ namespace MareSynchronos.API.SignalR; public interface IMareHub { - const int ApiVersion = 21; + const int ApiVersion = 22; const string Path = "/mare"; Task GetConnectionDto();