use crate::Error;
use serde::{Deserialize, Serialize};
use std::fmt;
const NOOP: u16 = 0;
const CREATE_ACCOUNT: u16 = 1;
const DELETE_ACCOUNT: u16 = 2;
#[deprecated]
const LOGIN_RESPONSE: u16 = 3;
const CREATE_VAULT: u16 = 4;
const READ_VAULT: u16 = 5;
const UPDATE_VAULT: u16 = 6;
const DELETE_VAULT: u16 = 7;
const GET_VAULT_NAME: u16 = 8;
const SET_VAULT_NAME: u16 = 9;
const SET_VAULT_META: u16 = 10;
const CREATE_SECRET: u16 = 11;
const READ_SECRET: u16 = 12;
const UPDATE_SECRET: u16 = 13;
const DELETE_SECRET: u16 = 14;
const MOVE_SECRET: u16 = 15;
const READ_EVENT_LOG: u16 = 16;
const EXPORT_VAULT: u16 = 17;
const IMPORT_VAULT: u16 = 18;
const EXPORT_BACKUP_ARCHIVE: u16 = 19;
const IMPORT_BACKUP_ARCHIVE: u16 = 20;
const EXPORT_UNSAFE: u16 = 21;
const IMPORT_UNSAFE: u16 = 22;
const EXPORT_CONTACTS: u16 = 23;
const IMPORT_CONTACTS: u16 = 24;
#[derive(Debug, Serialize, Deserialize, Copy, Clone, Eq, PartialEq)]
pub enum EventKind {
Noop,
CreateAccount,
DeleteAccount,
LoginResponse,
CreateVault,
ReadVault,
UpdateVault,
GetVaultName,
SetVaultName,
SetVaultMeta,
DeleteVault,
CreateSecret,
ReadSecret,
UpdateSecret,
DeleteSecret,
MoveSecret,
ReadEventLog,
ExportVault,
ImportVault,
ExportBackupArchive,
ImportBackupArchive,
ExportUnsafe,
ImportUnsafe,
ExportContacts,
ImportContacts,
}
impl Default for EventKind {
fn default() -> Self {
Self::Noop
}
}
impl TryFrom<u16> for EventKind {
type Error = Error;
fn try_from(value: u16) -> std::result::Result<Self, Self::Error> {
Ok(match value {
NOOP => EventKind::Noop,
CREATE_ACCOUNT => EventKind::CreateAccount,
DELETE_ACCOUNT => EventKind::DeleteAccount,
LOGIN_RESPONSE => EventKind::LoginResponse,
CREATE_VAULT => EventKind::CreateVault,
READ_VAULT => EventKind::ReadVault,
UPDATE_VAULT => EventKind::UpdateVault,
DELETE_VAULT => EventKind::DeleteVault,
GET_VAULT_NAME => EventKind::GetVaultName,
SET_VAULT_NAME => EventKind::SetVaultName,
SET_VAULT_META => EventKind::SetVaultMeta,
CREATE_SECRET => EventKind::CreateSecret,
READ_SECRET => EventKind::ReadSecret,
UPDATE_SECRET => EventKind::UpdateSecret,
DELETE_SECRET => EventKind::DeleteSecret,
MOVE_SECRET => EventKind::MoveSecret,
READ_EVENT_LOG => EventKind::ReadEventLog,
EXPORT_VAULT => EventKind::ExportVault,
IMPORT_VAULT => EventKind::ImportVault,
EXPORT_BACKUP_ARCHIVE => EventKind::ExportBackupArchive,
IMPORT_BACKUP_ARCHIVE => EventKind::ImportBackupArchive,
EXPORT_UNSAFE => EventKind::ExportUnsafe,
IMPORT_UNSAFE => EventKind::ImportUnsafe,
EXPORT_CONTACTS => EventKind::ExportContacts,
IMPORT_CONTACTS => EventKind::ImportContacts,
_ => return Err(Error::UnknownEventKind(value)),
})
}
}
impl From<&EventKind> for u16 {
fn from(value: &EventKind) -> Self {
match value {
EventKind::Noop => NOOP,
EventKind::CreateAccount => CREATE_ACCOUNT,
EventKind::DeleteAccount => DELETE_ACCOUNT,
EventKind::LoginResponse => LOGIN_RESPONSE,
EventKind::CreateVault => CREATE_VAULT,
EventKind::ReadVault => READ_VAULT,
EventKind::UpdateVault => UPDATE_VAULT,
EventKind::DeleteVault => DELETE_VAULT,
EventKind::GetVaultName => GET_VAULT_NAME,
EventKind::SetVaultName => SET_VAULT_NAME,
EventKind::SetVaultMeta => SET_VAULT_META,
EventKind::CreateSecret => CREATE_SECRET,
EventKind::ReadSecret => READ_SECRET,
EventKind::UpdateSecret => UPDATE_SECRET,
EventKind::DeleteSecret => DELETE_SECRET,
EventKind::MoveSecret => MOVE_SECRET,
EventKind::ReadEventLog => READ_EVENT_LOG,
EventKind::ExportVault => EXPORT_VAULT,
EventKind::ImportVault => IMPORT_VAULT,
EventKind::ExportBackupArchive => EXPORT_BACKUP_ARCHIVE,
EventKind::ImportBackupArchive => IMPORT_BACKUP_ARCHIVE,
EventKind::ExportUnsafe => EXPORT_UNSAFE,
EventKind::ImportUnsafe => IMPORT_UNSAFE,
EventKind::ExportContacts => EXPORT_CONTACTS,
EventKind::ImportContacts => IMPORT_CONTACTS,
}
}
}
impl fmt::Display for EventKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", {
match self {
EventKind::Noop => "NOOP",
EventKind::CreateAccount => "CREATE_ACCOUNT",
EventKind::DeleteAccount => "DELETE_ACCOUNT",
EventKind::LoginResponse => "LOGIN_RESPONSE",
EventKind::CreateVault => "CREATE_FOLDER",
EventKind::ReadVault => "READ_FOLDER",
EventKind::UpdateVault => "UPDATE_FOLDER",
EventKind::DeleteVault => "DELETE_FOLDER",
EventKind::GetVaultName => "GET_FOLDER_NAME",
EventKind::SetVaultName => "SET_FOLDER_NAME",
EventKind::SetVaultMeta => "SET_FOLDER_META",
EventKind::CreateSecret => "CREATE_SECRET",
EventKind::ReadSecret => "READ_SECRET",
EventKind::UpdateSecret => "UPDATE_SECRET",
EventKind::DeleteSecret => "DELETE_SECRET",
EventKind::MoveSecret => "MOVE_SECRET",
EventKind::ReadEventLog => "READ_EVENT_LOG",
EventKind::ExportVault => "EXPORT_FOLDER",
EventKind::ImportVault => "IMPORT_FOLDER",
EventKind::ExportBackupArchive => "EXPORT_BACKUP_ARCHIVE",
EventKind::ImportBackupArchive => "IMPORT_BACKUP_ARCHIVE",
EventKind::ExportUnsafe => "EXPORT_UNSAFE",
EventKind::ImportUnsafe => "IMPORT_UNSAFE",
EventKind::ExportContacts => "EXPORT_CONTACTS",
EventKind::ImportContacts => "IMPORT_CONTACTS",
}
})
}
}