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))
}
};
}