You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

98 lines
2.2 KiB

mod handlers;
mod db;
mod errors;
use warp::{
Filter,
Rejection,
Reply,
body
};
use env_logger;
use u_lib::{
MASTER_PORT,
contracts::*,
network::Paths
};
use db::*;
use serde::{
de::DeserializeOwned
};
#[macro_use]
extern crate diesel;
fn get_content<M>()
-> impl Filter<Extract = (Message<'static, M>,),
Error = Rejection> + Clone
where
M: Clone + Sync + Send + DeserializeOwned + 'static
{
body::content_length_limit(1024*64)
.and(body::json::<Message<M>>())
}
#[tokio::main]
async fn main() {
env_logger::init();
let base_db = UDB::new().unwrap();
let db = warp::any().map(move || base_db.clone());
let new_client = warp::post()
.and(warp::path(Paths::init))
//.and(get_content::<IAgent>())
//.and(db.clone())
.and_then(handlers::dummy);
/*
let ls = warp::get()
.and(warp::path(Paths::ls))
.and(db.clone())
.and_then(handlers::ls);
let get_jobs = warp::get()
.and(warp::path(Paths::get_jobs))
.and(db.clone())
.and_then(handlers::get_jobs);
let set_jobs = warp::post()
.and(warp::path(Paths::set_jobs))
.and(warp::path::param::<Uuid>().map(Some))
.and(get_content::<JobMetaStorage>())
.and(db.clone())
.and_then(handlers::set_jobs);
let get_job_results = warp::get()
.and(warp::path(Paths::get_job_results))
.and(warp::path::param::<Uuid>())
.and(db.clone())
.and_then(handlers::get_job_results);
let report = warp::post()
.and(warp::path(Paths::report))
.and(get_content::<Vec<JobResult>>())
.and(db.clone())
.and_then(handlers::report);
*/
let auth_token = warp::header::exact("authorization", "Bearer 123qwe");
let agent_zone = new_client
// .or(get_jobs)
// .or(report)
;
let auth_zone = auth_token
// .and(ls
// .or(set_jobs)
// .or(get_job_results)
// )
;
let routes = auth_zone
.or(agent_zone)
.with(warp::log("warp"));
warp::serve(routes)
.run(([0,0,0,0], MASTER_PORT)).await;
}