forked from Roflin/gamenight
44 lines
1.2 KiB
Rust
44 lines
1.2 KiB
Rust
use rocket::fs::NamedFile;
|
|
use rocket::http::Method;
|
|
use rocket_cors::{AllowedHeaders, AllowedOrigins, Cors, CorsOptions};
|
|
use std::io;
|
|
use std::path::{Path, PathBuf};
|
|
use local_ip_address::local_ip;
|
|
|
|
|
|
pub fn make_cors() -> Cors {
|
|
let allowed_origins = AllowedOrigins::some_exact(&[
|
|
"http://localhost:3000",
|
|
"http://127.0.0.1:3000",
|
|
&format!("http://{}:8000",local_ip().unwrap())[..],
|
|
"http://localhost:8000",
|
|
"http://0.0.0.0:8000",
|
|
]);
|
|
|
|
CorsOptions {
|
|
allowed_origins,
|
|
allowed_methods: vec![Method::Get].into_iter().map(From::from).collect(), // 1.
|
|
allowed_headers: AllowedHeaders::some(&[
|
|
"Authorization",
|
|
"Accept",
|
|
"Access-Control-Allow-Origin",
|
|
]),
|
|
allow_credentials: true,
|
|
..Default::default()
|
|
}
|
|
.to_cors()
|
|
.expect("error while building CORS")
|
|
}
|
|
|
|
#[get("/<file..>", rank = 10)]
|
|
pub async fn files(file: PathBuf) -> Option<NamedFile> {
|
|
NamedFile::open(Path::new("../frontend/build/").join(file))
|
|
.await
|
|
.ok()
|
|
}
|
|
|
|
#[get("/")]
|
|
pub async fn index() -> io::Result<NamedFile> {
|
|
NamedFile::open("../frontend/build/index.html").await
|
|
}
|