Eerste commit
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
namespace MijnBesluit.Protocol;
|
||||
|
||||
/// <summary>De acties die de SocketServer kent. Eén vaste lijst, gedeeld door server en app.</summary>
|
||||
public static class SocketActions
|
||||
{
|
||||
public const string Ping = "ping";
|
||||
|
||||
/// <summary>Vraagt een inlogcode aan voor een bestaand account.</summary>
|
||||
public const string RequestLoginCode = "auth.request-code";
|
||||
|
||||
/// <summary>Logt in met het e-mailadres en de ontvangen code.</summary>
|
||||
public const string SignIn = "auth.signin";
|
||||
|
||||
public const string SignOut = "auth.signout";
|
||||
|
||||
/// <summary>Vraagt een code aan om een nieuw account te maken; naam wordt meegestuurd.</summary>
|
||||
public const string RequestRegisterCode = "auth.request-register-code";
|
||||
|
||||
/// <summary>Maakt het account aan met de ontvangen code.</summary>
|
||||
public const string Register = "auth.register";
|
||||
|
||||
public const string AcceptInvitation = "auth.accept-invitation";
|
||||
|
||||
/// <summary>Je eigen profiel opvragen en wijzigen.</summary>
|
||||
public const string OwnProfile = "account.profile";
|
||||
public const string SaveOwnProfile = "account.profile-save";
|
||||
|
||||
/// <summary>Je inlogadres wijzigen: eerst een code naar het nieuwe adres, dan bevestigen.</summary>
|
||||
public const string RequestEmailChange = "account.email-request";
|
||||
public const string ConfirmEmailChange = "account.email-confirm";
|
||||
|
||||
/// <summary>
|
||||
/// Je account opheffen: eerst opvragen wát er weggaat, dan een code per e-mail, dan weg.
|
||||
/// Onomkeerbaar, en daarom in drie stappen. Zie AccountOpheffenService.
|
||||
/// </summary>
|
||||
public const string DeleteAccountSummary = "account.delete-summary";
|
||||
public const string RequestDeleteAccount = "account.delete-request";
|
||||
public const string ConfirmDeleteAccount = "account.delete-confirm";
|
||||
|
||||
/// <summary>
|
||||
/// Heeft iemand een profiel voor mij aangemaakt? En het antwoord daarop: dat ben ik, of dat
|
||||
/// ben ik niet. Zie docs/Identiteit.md.
|
||||
/// </summary>
|
||||
public const string NotesAboutMe = "account.notes";
|
||||
public const string AcceptNote = "account.notes-accept";
|
||||
public const string DeclineNote = "account.notes-decline";
|
||||
|
||||
/// <summary>Alles wat het beginscherm nodig heeft, in één keer.</summary>
|
||||
public const string Overview = "home.overview";
|
||||
|
||||
/// <summary>Hoeveel dagen vooruit het overzicht kijkt.</summary>
|
||||
public const string SetLookahead = "home.lookahead";
|
||||
|
||||
/// <summary>De advertentie die nu op het overzicht mag staan, of geen.</summary>
|
||||
public const string Advertentie = "home.advertentie";
|
||||
|
||||
public const string ListFamilies = "family.list";
|
||||
public const string ListMembers = "family.members";
|
||||
public const string AddMember = "family.add-member";
|
||||
public const string UpdatePerson = "family.update-person";
|
||||
public const string Invite = "family.invite";
|
||||
public const string RemoveMember = "family.remove-member";
|
||||
|
||||
public const string VaultList = "vault.list";
|
||||
public const string VaultOpen = "vault.open";
|
||||
public const string VaultSave = "vault.save";
|
||||
public const string VaultUpdate = "vault.update";
|
||||
public const string VaultDelete = "vault.delete";
|
||||
|
||||
// Bijlagen. Die gaan in stukken over de lijn, want een socketbericht is begrensd.
|
||||
public const string FileBegin = "vault.file-begin";
|
||||
public const string FileChunk = "vault.file-chunk";
|
||||
public const string FileEnd = "vault.file-end";
|
||||
public const string FileCancel = "vault.file-cancel";
|
||||
public const string FileList = "vault.file-list";
|
||||
public const string FileRead = "vault.file-read";
|
||||
public const string FileDelete = "vault.file-delete";
|
||||
|
||||
public const string Inbox = "message.inbox";
|
||||
public const string Outbox = "message.outbox";
|
||||
public const string MessageRead = "message.read";
|
||||
public const string MessageReadSent = "message.read-sent";
|
||||
public const string MessageCompose = "message.compose";
|
||||
public const string MessageDraft = "message.draft";
|
||||
public const string MessageUpdate = "message.update";
|
||||
public const string MessageWithdraw = "message.withdraw";
|
||||
public const string MessageDelete = "message.delete";
|
||||
|
||||
public const string DeclareDeath = "legacy.declare-death";
|
||||
public const string ObjectDeath = "legacy.object";
|
||||
public const string LegacyStatus = "legacy.status";
|
||||
public const string AppointManager = "legacy.appoint-manager";
|
||||
public const string RemoveManager = "legacy.remove-manager";
|
||||
public const string FileListPerson = "vault.file-list-person";
|
||||
public const string FileListMessage = "vault.file-list-message";
|
||||
public const string FileProfilePhoto = "vault.file-profile";
|
||||
|
||||
/// <summary>Kluisitems die iemand rechtstreeks met jou heeft gedeeld, vooraf te bespreken.</summary>
|
||||
public const string VaultSharedWithMe = "vault.shared-with-me";
|
||||
|
||||
/// <summary>Nalatenschappen die aan jou zijn toevertrouwd, en wat daarvan is vrijgegeven.</summary>
|
||||
public const string LegacyEntrusted = "legacy.entrusted";
|
||||
public const string LegacyEntrustedItems = "legacy.entrusted-items";
|
||||
|
||||
public const string LegacyManagers = "legacy.managers";
|
||||
public const string LegacySettings = "legacy.settings";
|
||||
|
||||
/// <summary>Het toestel aanmelden voor meldingen, met het kenmerk van Firebase of APNs.</summary>
|
||||
public const string RegisterDevice = "push.register";
|
||||
public const string UnregisterDevice = "push.unregister";
|
||||
|
||||
/// <summary>Een proefmelding naar je eigen toestellen, om te zien of de hele keten werkt.</summary>
|
||||
public const string TestDevice = "push.proef";
|
||||
}
|
||||
|
||||
/// <summary>Een verzoek van de app aan de SocketServer.</summary>
|
||||
public class SocketRequest
|
||||
{
|
||||
/// <summary>Meegestuurd in het antwoord, zodat de app verzoek en antwoord kan koppelen.</summary>
|
||||
public string RequestId { get; set; } = Guid.NewGuid().ToString("N");
|
||||
|
||||
/// <summary>Eén van <see cref="SocketActions"/>.</summary>
|
||||
public string Action { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>Sessietoken uit <see cref="SocketActions.SignIn"/>. Leeg bij inloggen en registreren.</summary>
|
||||
public string? Token { get; set; }
|
||||
|
||||
/// <summary>De gegevens van dit verzoek, als JSON-object.</summary>
|
||||
public System.Text.Json.JsonElement? Payload { get; set; }
|
||||
|
||||
/// <summary>Versie van het protocol, zodat oude apps herkend kunnen worden.</summary>
|
||||
public int Version { get; set; } = 1;
|
||||
|
||||
/// <summary>Vrije aanduiding van het toestel, komt in het logboek terecht.</summary>
|
||||
public string? Device { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>Het antwoord van de SocketServer.</summary>
|
||||
public class SocketResponse
|
||||
{
|
||||
public string RequestId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>"Ok" of "Error" — dezelfde opzet als de bestaande RenH-socketserver.</summary>
|
||||
public string Status { get; set; } = "Ok";
|
||||
|
||||
/// <summary>Melding in gewone taal, bedoeld om aan de gebruiker te tonen.</summary>
|
||||
public string? Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Een kort kenmerk van de fout, voor de app om op te reageren. Alleen ingevuld waar de app
|
||||
/// iets anders moet doen dan de melding tonen - zie <see cref="SocketFoutcodes"/>. Op de
|
||||
/// melding zelf sturen zou werken tot iemand er een komma in zet.
|
||||
/// </summary>
|
||||
public string? Code { get; set; }
|
||||
|
||||
/// <summary>Resultaat van de actie, als JSON.</summary>
|
||||
public object? Payload { get; set; }
|
||||
|
||||
public static SocketResponse Ok(string requestId, object? payload = null) =>
|
||||
new() { RequestId = requestId, Status = "Ok", Payload = payload };
|
||||
|
||||
public static SocketResponse Error(string requestId, string message, string? code = null) =>
|
||||
new() { RequestId = requestId, Status = "Error", Message = message, Code = code };
|
||||
}
|
||||
|
||||
/// <summary>Fouten waar de app zelf iets mee moet, los van de tekst die de gebruiker leest.</summary>
|
||||
public static class SocketFoutcodes
|
||||
{
|
||||
/// <summary>
|
||||
/// Het token is niet meer geldig. De app hoort dan niet "opnieuw proberen" aan te bieden -
|
||||
/// dat lukt nooit - maar het bewaarde token weg te gooien en naar het inlogscherm te gaan.
|
||||
/// </summary>
|
||||
public const string SessieVerlopen = "sessie-verlopen";
|
||||
}
|
||||
Reference in New Issue
Block a user