use crate::models::HttpRequest::HttpRequest; use crate::routes::statics; use tokio::net::TcpStream as TokioTcpStream; use crate::routes::auth; fn is_file(file: &str) -> bool { file.contains('.') } pub async fn proxy(http_request: HttpRequest, stream: &mut TokioTcpStream) { println!("Proxying request..."); if is_file(http_request.clone().headers.path.expect("").join("/").as_str()) { statics::serve_static_file(http_request.clone(), stream).await; } else { handle_api_request(http_request.clone(), stream).await; } } pub async fn handle_api_request(http_request: HttpRequest, stream: &mut TokioTcpStream) { println!("{:?}", http_request.headers.path.clone().expect("")[0].as_str()); match http_request.headers.path.clone().expect("")[1].as_str() { "api" => { match http_request.headers.path.clone().expect("")[2].as_str() { "auth" => auth::handle_auth_request(http_request, stream).await, _ => futures::future::ready(()).await, } }, _ => futures::future::ready(()).await, }; }