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.
48 lines
1.0 KiB
48 lines
1.0 KiB
mod handlers; |
|
|
|
use warp::{ |
|
Filter, |
|
Rejection, |
|
Reply, |
|
body |
|
}; |
|
use env_logger; |
|
use u_lib::{ |
|
MASTER_PORT, |
|
contracts::*, |
|
}; |
|
|
|
|
|
fn get_content() -> impl Filter<Extract = (Message<'static, ClientInfo>,), |
|
Error = Rejection> + Clone { |
|
body::content_length_limit(1024*64).and(body::json::<Message<ClientInfo>>()) |
|
} |
|
|
|
|
|
#[tokio::main] |
|
async fn main() { |
|
env_logger::init(); |
|
let base_db = Storage::new(); |
|
let db = warp::any().map(move || base_db.clone()); |
|
|
|
let new_client = warp::post() |
|
.and(warp::path("init")) |
|
.and(get_content()) |
|
.and(db.clone()) |
|
.and_then(handlers::add_client); |
|
|
|
let ls = warp::get() |
|
.and(warp::path("ls")) |
|
.and(db.clone()) |
|
.and_then(handlers::listing); |
|
|
|
let auth_token = warp::header::exact("authorization", "Bearer 123qwe"); |
|
|
|
let auth_zone = auth_token.and(ls); |
|
|
|
let routes = new_client |
|
.or(auth_zone) |
|
.with(warp::log("warp")); |
|
warp::serve(routes) |
|
.run(([0,0,0,0], MASTER_PORT)).await; |
|
}
|
|
|