Messagepack (#12)

* add messagepack attributes

* fix isnullorempty

* bump api version

---------

Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
This commit is contained in:
rootdarkarchon
2023-02-10 12:30:43 +01:00
committed by GitHub
parent f604e6d27e
commit 381f9a4808
28 changed files with 72 additions and 10 deletions

View File

@@ -1,7 +1,9 @@
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Data; namespace MareSynchronos.API.Data;
[MessagePackObject(keyAsPropertyName: true)]
public class CharacterData : HashableDataBase public class CharacterData : HashableDataBase
{ {
public Dictionary<ObjectKind, List<FileReplacementData>> FileReplacements { get; set; } = new(); public Dictionary<ObjectKind, List<FileReplacementData>> FileReplacements { get; set; } = new();

View File

@@ -1,5 +1,8 @@
namespace MareSynchronos.API.Data; using MessagePack;
namespace MareSynchronos.API.Data;
[MessagePackObject(keyAsPropertyName: true)]
public class FileReplacementData : HashableDataBase public class FileReplacementData : HashableDataBase
{ {
public string[] GamePaths { get; set; } = Array.Empty<string>(); public string[] GamePaths { get; set; } = Array.Empty<string>();

View File

@@ -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 record GroupData(string GID, string? Alias = null)
{ {
public string AliasOrGID => Alias ?? GID; [IgnoreMember]
public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias;
} }

View File

@@ -1,5 +1,6 @@
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
using MessagePack;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace MareSynchronos.API.Data; namespace MareSynchronos.API.Data;

View File

@@ -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 record UserData(string UID, string? Alias = null)
{ {
public string AliasOrUID => Alias ?? UID; [IgnoreMember]
public string AliasOrUID => string.IsNullOrWhiteSpace(Alias) ? UID : Alias;
} }

View File

@@ -1,7 +1,9 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto; namespace MareSynchronos.API.Dto;
[MessagePackObject(keyAsPropertyName: true)]
public record ConnectionDto(UserData User) public record ConnectionDto(UserData User)
{ {
public int ServerVersion { get; set; } public int ServerVersion { get; set; }
@@ -10,6 +12,7 @@ public record ConnectionDto(UserData User)
public ServerInfo ServerInfo { get; set; } = new(); public ServerInfo ServerInfo { get; set; } = new();
} }
[MessagePackObject(keyAsPropertyName: true)]
public record ServerInfo public record ServerInfo
{ {
public string ShardName { get; set; } = string.Empty; public string ShardName { get; set; } = string.Empty;

View File

@@ -1,5 +1,8 @@
namespace MareSynchronos.API.Dto.Files; using MessagePack;
namespace MareSynchronos.API.Dto.Files;
[MessagePackObject(keyAsPropertyName: true)]
public record DownloadFileDto : ITransferFileDto public record DownloadFileDto : ITransferFileDto
{ {
public bool FileExists { get; set; } = true; public bool FileExists { get; set; } = true;

View File

@@ -1,5 +1,8 @@
namespace MareSynchronos.API.Dto.Files; using MessagePack;
namespace MareSynchronos.API.Dto.Files;
[MessagePackObject(keyAsPropertyName: true)]
public record ForbiddenFileDto public record ForbiddenFileDto
{ {
public string Hash { get; set; } = string.Empty; public string Hash { get; set; } = string.Empty;

View File

@@ -1,5 +1,8 @@
namespace MareSynchronos.API.Dto.Files; using MessagePack;
namespace MareSynchronos.API.Dto.Files;
[MessagePackObject(keyAsPropertyName: true)]
public record UploadFileDto : ITransferFileDto public record UploadFileDto : ITransferFileDto
{ {
public string Hash { get; set; } = string.Empty; public string Hash { get; set; } = string.Empty;

View File

@@ -1,7 +1,9 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record BannedGroupUserDto : GroupPairDto public record BannedGroupUserDto : GroupPairDto
{ {
public BannedGroupUserDto(GroupData group, UserData user, string reason, DateTime bannedOn, string bannedBy) : base(group, user) public BannedGroupUserDto(GroupData group, UserData user, string reason, DateTime bannedOn, string bannedBy) : base(group, user)

View File

@@ -1,7 +1,9 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupDto(GroupData Group) public record GroupDto(GroupData Group)
{ {
public GroupData Group { get; set; } = Group; public GroupData Group { get; set; } = Group;

View File

@@ -1,8 +1,10 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; 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 record GroupFullInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions, GroupUserPermissions GroupUserPermissions, GroupUserInfo GroupUserInfo) : GroupInfoDto(Group, Owner, GroupPermissions)
{ {
public GroupUserPermissions GroupUserPermissions { get; set; } = GroupUserPermissions; public GroupUserPermissions GroupUserPermissions { get; set; } = GroupUserPermissions;

View File

@@ -1,8 +1,10 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions) : GroupDto(Group) public record GroupInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions) : GroupDto(Group)
{ {
public GroupPermissions GroupPermissions { get; set; } = GroupPermissions; public GroupPermissions GroupPermissions { get; set; } = GroupPermissions;

View File

@@ -1,7 +1,9 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupPairDto(GroupData Group, UserData User) : GroupDto(Group) public record GroupPairDto(GroupData Group, UserData User) : GroupDto(Group)
{ {
public string UID => User.UID; public string UID => User.UID;

View File

@@ -1,8 +1,10 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupPairFullInfoDto(GroupData Group, UserData User, GroupUserInfo GroupPairStatusInfo, GroupUserPermissions GroupUserPermissions) : GroupPairDto(Group, User) public record GroupPairFullInfoDto(GroupData Group, UserData User, GroupUserInfo GroupPairStatusInfo, GroupUserPermissions GroupUserPermissions) : GroupPairDto(Group, User)
{ {
public GroupUserInfo GroupPairStatusInfo { get; set; } = GroupPairStatusInfo; public GroupUserInfo GroupPairStatusInfo { get; set; } = GroupPairStatusInfo;

View File

@@ -1,6 +1,8 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupPairUserInfoDto(GroupData Group, UserData User, GroupUserInfo GroupUserInfo) : GroupPairDto(Group, User); public record GroupPairUserInfoDto(GroupData Group, UserData User, GroupUserInfo GroupUserInfo) : GroupPairDto(Group, User);

View File

@@ -1,6 +1,8 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupPairUserPermissionDto(GroupData Group, UserData User, GroupUserPermissions GroupPairPermissions) : GroupPairDto(Group, User); public record GroupPairUserPermissionDto(GroupData Group, UserData User, GroupUserPermissions GroupPairPermissions) : GroupPairDto(Group, User);

View File

@@ -1,5 +1,7 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupPasswordDto(GroupData Group, string Password) : GroupDto(Group); public record GroupPasswordDto(GroupData Group, string Password) : GroupDto(Group);

View File

@@ -1,6 +1,8 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.Group; namespace MareSynchronos.API.Dto.Group;
[MessagePackObject(keyAsPropertyName: true)]
public record GroupPermissionDto(GroupData Group, GroupPermissions Permissions) : GroupDto(Group); public record GroupPermissionDto(GroupData Group, GroupPermissions Permissions) : GroupDto(Group);

View File

@@ -1,5 +1,8 @@
namespace MareSynchronos.API.Dto; using MessagePack;
namespace MareSynchronos.API.Dto;
[MessagePackObject(keyAsPropertyName: true)]
public record SystemInfoDto public record SystemInfoDto
{ {
public int OnlineUsers { get; set; } public int OnlineUsers { get; set; }

View File

@@ -1,5 +1,7 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.User; namespace MareSynchronos.API.Dto.User;
[MessagePackObject(keyAsPropertyName: true)]
public record OnlineUserCharaDataDto(UserData User, CharacterData CharaData) : UserDto(User); public record OnlineUserCharaDataDto(UserData User, CharacterData CharaData) : UserDto(User);

View File

@@ -1,5 +1,7 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.User; namespace MareSynchronos.API.Dto.User;
[MessagePackObject(keyAsPropertyName: true)]
public record OnlineUserIdentDto(UserData User, string Ident) : UserDto(User); public record OnlineUserIdentDto(UserData User, string Ident) : UserDto(User);

View File

@@ -1,5 +1,7 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.User; namespace MareSynchronos.API.Dto.User;
[MessagePackObject(keyAsPropertyName: true)]
public record UserCharaDataMessageDto(List<UserData> Recipients, CharacterData CharaData); public record UserCharaDataMessageDto(List<UserData> Recipients, CharacterData CharaData);

View File

@@ -1,5 +1,7 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MessagePack;
namespace MareSynchronos.API.Dto.User; namespace MareSynchronos.API.Dto.User;
[MessagePackObject(keyAsPropertyName: true)]
public record UserDto(UserData User); public record UserDto(UserData User);

View File

@@ -1,8 +1,10 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.User; namespace MareSynchronos.API.Dto.User;
[MessagePackObject(keyAsPropertyName: true)]
public record UserPairDto(UserData User, UserPermissions OwnPermissions, UserPermissions OtherPermissions) : UserDto(User) public record UserPairDto(UserData User, UserPermissions OwnPermissions, UserPermissions OtherPermissions) : UserDto(User)
{ {
public UserPermissions OwnPermissions { get; set; } = OwnPermissions; public UserPermissions OwnPermissions { get; set; } = OwnPermissions;

View File

@@ -1,6 +1,8 @@
using MareSynchronos.API.Data; using MareSynchronos.API.Data;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MessagePack;
namespace MareSynchronos.API.Dto.User; namespace MareSynchronos.API.Dto.User;
[MessagePackObject(keyAsPropertyName: true)]
public record UserPermissionsDto(UserData User, UserPermissions Permissions) : UserDto(User); public record UserPermissionsDto(UserData User, UserPermissions Permissions) : UserDto(User);

View File

@@ -7,6 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="MessagePack.Annotations" Version="2.1.90" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup> </ItemGroup>

View File

@@ -8,7 +8,7 @@ namespace MareSynchronos.API.SignalR;
public interface IMareHub public interface IMareHub
{ {
const int ApiVersion = 21; const int ApiVersion = 22;
const string Path = "/mare"; const string Path = "/mare";
Task<ConnectionDto> GetConnectionDto(); Task<ConnectionDto> GetConnectionDto();