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.
 
 
 

33 lines
1.1 KiB

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