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