usc 1.20230730.1349

A common lib for unitedservices
Documentation
mod index;


use actix_web::{HttpRequest};


use crate::myerror::MyError;

use actix_web::Result;


use crate::myparameter::*;
use bevy_reflect::{Reflect};
use serde::{Serialize, Deserialize};
use async_trait::async_trait;


#[async_trait]
pub trait IWeb  {
     fn route(&self)->&'static str;
     fn parameters(&self)->Vec<String>;
     async fn handle(&self,para:MyParameter,requester:RequesterInfo) -> Result<String,MyError> ;
}

#[derive(Debug,Reflect,Default,Serialize,Deserialize)]
pub struct RequesterInfo {
   pub from_ip:String,
   pub from_app_name:String,
   pub from_action:String,
}


pub struct CollectorIWeb(pub Box<dyn IWeb>);
pub struct CollectorIWebRaw(pub Box<dyn IWeb>);
inventory::collect!(CollectorIWeb);
inventory::collect!(CollectorIWebRaw);


#[macro_export]
macro_rules! myweb {
    ($a:expr) => {
        inventory::submit! {
            CollectorIWeb(Box::new($a))
        }
    };
}