rustauth-plugins 0.2.0

Official RustAuth plugin modules.
Documentation
use http::{Method, StatusCode};
use serde::Serialize;

use super::{endpoint, json, SharedConfigurations};
use crate::api_key::cleanup;

#[derive(Debug, Clone, Serialize)]
struct DeleteExpiredResponse {
    success: bool,
    error: Option<String>,
}

pub fn delete_expired_endpoint(
    configurations: SharedConfigurations,
) -> rustauth_core::api::AsyncAuthEndpoint {
    endpoint(
        "/api-key/delete-all-expired-api-keys",
        Method::POST,
        configurations,
        |context, _request, configurations| async move {
            let options = configurations.resolve(None)?;
            match cleanup::delete_all_expired_api_keys(&context, &options, true).await {
                Ok(_) => json(
                    StatusCode::OK,
                    &DeleteExpiredResponse {
                        success: true,
                        error: None,
                    },
                ),
                Err(error) => json(
                    StatusCode::OK,
                    &DeleteExpiredResponse {
                        success: false,
                        error: Some(error.to_string()),
                    },
                ),
            }
        },
    )
}