ddnet-accounts-shared 0.2.0

Most account related types shared accross all libs & bins.
Documentation
use anyhow::anyhow;
use serde::{Deserialize, Serialize};

use super::account_token::AccountToken;

/// Represents the data required for a delete attempt.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteRequest {
    /// An account token that is used to verify that the delete
    /// request is valid.
    pub account_token: AccountToken,
}

/// Prepares a delete request for the account server.
pub fn delete(account_token_hex: String) -> anyhow::Result<DeleteRequest> {
    let account_token = hex::decode(account_token_hex)?;

    Ok(DeleteRequest {
        account_token: account_token
            .try_into()
            .map_err(|_| anyhow!("Invalid account token."))?,
    })
}