~/selfhut

selfhut/src/main.rs -rw-r--r-- 1.86 kB
80cce623 — Arthur Melton favicon support 2 years ago

            
19f9b68c arthurmelton
ad9e5164 arthurmelton
00c0a257 Arthur Melton
0545f2a7 Arthur Melton
ef55c0da arthurmelton
0545f2a7 Arthur Melton
94e2262d arthurmelton
532ca616 Arthur Melton
616316d3 Arthur Melton
47885f67 Arthur Melton
f2f2d97d Arthur Melton
01f10fe8 Arthur Melton
76d4fa6d Arthur Melton
00c0a257 Arthur Melton
e4d868e2 Arthur Melton
ef55c0da arthurmelton
7dbdfabf arthurmelton
7dbdfabf arthurmelton
00c0a257 Arthur Melton
0545f2a7 Arthur Melton
00c0a257 Arthur Melton
66cb4022 Arthur Melton
80cce623 Arthur Melton
00c0a257 Arthur Melton
76d4fa6d Arthur Melton
1268e21e Arthur Melton
69345aa0 Arthur Melton
b1605a54 Arthur Melton
b961c5bf Arthur Melton
00c0a257 Arthur Melton
0545f2a7 Arthur Melton
6c6e1160 Arthur Melton
7dbdfabf arthurmelton
66cb4022 Arthur Melton
7dbdfabf arthurmelton
80cce623 Arthur Melton
5c44f94c Arthur Melton
19f9b68c arthurmelton
80cce623 Arthur Melton

































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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#[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::archive;
use crate::repository::blame;
use crate::repository::commit;
use crate::repository::log;
use crate::repository::raw;
use crate::repository::refs;
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,
                favicon,
                index::index,
                summary::repository,
                tree::tree_main,
                tree::tree,
                clone::clone,
                raw::raw,
                log::log_main,
                log::log,
                blame::blames,
                commit::commit,
                commit::patch,
                refs::refs,
                refs::refs_id,
                archive::archive
            ],
        )
        .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()
}

#[get("/favicon.ico")]
async fn favicon() -> Option<rocket::fs::NamedFile> {
    let mut path = dirs::config_dir().expect("Could not get the config directory");
    path.push("git-server");
    path.push("favicon.ico"); 
    rocket::fs::NamedFile::open(path).await.ok()
}