~/selfhut

selfhut/src/main.rs -rw-r--r-- 1.41 kB
01f10fe8 — Arthur Melton format code 2 years ago
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#[macro_use]
extern crate rocket;
mod clone;
mod git;
mod index;
mod repository;
mod utils;

use utils::config;

use rocket::fs::relative;
use std::path::Path;

use crate::repository::blame;
use crate::repository::commit;
use crate::repository::log;
use crate::repository::raw;
use crate::repository::summary;
use crate::repository::tree;
use crate::utils::own_pathbuf::PathBufWithDotfiles;
use rocket_dyn_templates::Template;

#[launch]
fn rocket() -> _ {
    rocket::build()
        .mount(
            "/",
            routes![
                file_server,
                robots,
                index::index,
                summary::repository,
                tree::tree_main,
                tree::tree,
                clone::clone,
                raw::raw,
                log::log_main,
                log::log,
                blame::blames,
                commit::commit,
                commit::patch
            ],
        )
        .attach(Template::fairing())
}

#[get("/static/<path..>")]
async fn file_server(path: PathBufWithDotfiles) -> Option<rocket::fs::NamedFile> {
    let path = Path::new(relative!("static")).join(path.get());
    rocket::fs::NamedFile::open(path).await.ok()
}

#[get("/robots.txt")]
async fn robots() -> Option<rocket::fs::NamedFile> {
    let path = Path::new(relative!("static")).join(Path::new("robots.txt"));
    rocket::fs::NamedFile::open(path).await.ok()
}