43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use rocket::fs::NamedFile;
|
|
use rocket::{
|
|
fairing::{Fairing, Info, Kind},
|
|
http::Header,
|
|
Request, Response,
|
|
};
|
|
use std::io;
|
|
use std::path::{Path, PathBuf};
|
|
|
|
pub struct CORS;
|
|
|
|
#[rocket::async_trait]
|
|
impl Fairing for CORS {
|
|
fn info(&self) -> Info {
|
|
Info {
|
|
name: "Attaching CORS headers to responses",
|
|
kind: Kind::Response,
|
|
}
|
|
}
|
|
|
|
async fn on_response<'r>(&self, _request: &'r Request<'_>, response: &mut Response<'r>) {
|
|
response.set_header(Header::new("Access-Control-Allow-Origin", "*"));
|
|
response.set_header(Header::new(
|
|
"Access-Control-Allow-Methods",
|
|
"POST, GET, PATCH, OPTIONS",
|
|
));
|
|
response.set_header(Header::new("Access-Control-Allow-Headers", "*"));
|
|
response.set_header(Header::new("Access-Control-Allow-Credentials", "true"));
|
|
}
|
|
}
|
|
|
|
#[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
|
|
}
|