perimeterx-fastly-enforcer 2.2.2

PerimeterX Fastly Compute@Edge Rust Enforcer
Documentation
use crate::pxconfig::PXConfig;
use lazy_static::lazy_static;
use std::sync::atomic::AtomicBool;
use std::sync::Mutex;

#[derive(Default)]
pub struct PXLogger {
    pub px_app_id: Option<String>,
}

lazy_static! {
    pub static ref PX_LOG: Mutex<Option<PXLogger>> = Mutex::new(None);
    pub static ref PX_DEBUG_ENABLED: AtomicBool = AtomicBool::new(false);
}

#[macro_export]
macro_rules! px_debug {
    ($($arg:tt)*) => {
        if $crate::handlers::pxlogger::PX_DEBUG_ENABLED.load(std::sync::atomic::Ordering::Relaxed) {
            log::info!(
                "[PerimeterX - DEBUG][{}] - {}",
                $crate::handlers::pxlogger::PX_LOG.lock().unwrap().as_ref().and_then(|l| l.px_app_id.as_deref()).unwrap_or(""),
                format!($($arg)*)
            );
        }
    };
}

#[macro_export]
macro_rules! px_info {
    ($($arg:tt)*) => {
        log::info!(
            "[PerimeterX - INFO][{}] - {}",
            $crate::handlers::pxlogger::PX_LOG.lock().unwrap().as_ref().and_then(|l| l.px_app_id.as_deref()).unwrap_or(""),
            format!($($arg)*)
        );
    }
}

#[macro_export]
macro_rules! px_error {
    ($($arg:tt)*) => {
        log::error!(
            "[PerimeterX - ERROR][{}] - {}",
            $crate::handlers::pxlogger::PX_LOG.lock().unwrap().as_ref().and_then(|l| l.px_app_id.as_deref()).unwrap_or(""),
            format!($($arg)*)
        );
    }
}

impl PXLogger {
    pub fn new(conf: &PXConfig) -> Self {
        PX_DEBUG_ENABLED.store(conf.debug, std::sync::atomic::Ordering::Relaxed);
        PXLogger {
            px_app_id: Some(conf.app_id.to_string()),
        }
    }
}