zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
use crate::prelude2::*;

use actix_http::header::HeaderName;

// 随机生成 16 字节长度的字符串
pub async fn generate_random_16_string(request: HttpRequest) -> Result<HttpResponse> {
    request.text(200, &crate::commons::generate_random_16_string())
}

pub async fn generate_random_32_string(request: HttpRequest) -> Result<HttpResponse> {
    request.text(200, &crate::commons::generate_random_32_string())
}

pub async fn encrypt_aes_256(data: web::Bytes, request: HttpRequest) -> Result<HttpResponse> {
    let headers = request.headers();

    let key = if let Some(auth_header_value) = headers.get(HeaderName::from_static("key")) {
        auth_header_value.to_str().map_err(|e| anyhow::anyhow!(e))?
    } else {
        ""
    };

    let data = crate::commons::bytes_to_string(data.to_vec())?;
    let data = crate::commons::aes_256_encrypt(key, &data)?;

    request.text(200, &data)
}

pub async fn decrypt_aes_256(data: web::Bytes, request: HttpRequest) -> Result<HttpResponse> {
    let headers = request.headers();

    let key = if let Some(auth_header_value) = headers.get(HeaderName::from_static("key")) {
        auth_header_value.to_str().map_err(|e| anyhow::anyhow!(e))?
    } else {
        ""
    };

    let data = crate::commons::bytes_to_string(data.to_vec())?;
    let data = crate::commons::aes_256_decrypt(key, &data)?;

    request.text(200, &data)
}