git_http_backend/actix/
mod.rs

1use crate::actix::get_text_file::get_text_file;
2use crate::actix::git_receive_pack::git_receive_pack;
3use crate::actix::git_upload_pack::git_upload_pack;
4use crate::actix::objects_info_packs::objects_info_packs;
5use crate::actix::objects_pack::objects_pack;
6use crate::actix::refs::info_refs;
7use crate::GitConfig;
8use actix_web::web::Data;
9use actix_web::{web, HttpRequest};
10
11/// Actix-web DataServer
12pub mod handler;
13
14/// get text file handler
15pub mod get_text_file;
16/// receive-pack handler
17pub mod git_receive_pack;
18/// upload-pack handler
19pub mod git_upload_pack;
20/// objects info packs handler
21pub mod objects_info_packs;
22/// refs handler
23pub mod refs;
24
25/// objects pack handler
26pub mod objects_pack;
27
28/// Actix-web Router Export
29pub fn router<T>(cfg: &mut web::ServiceConfig)
30where
31    T: GitConfig + 'static,
32{
33    cfg.service(
34        web::scope("/{namespace}/{repo}")
35            .route(
36                "/git-upload-pack",
37                web::to::<_, (HttpRequest, web::Payload, Data<T>)>(git_upload_pack),
38            )
39            .route(
40                "/git-receive-pack",
41                web::to::<_, (HttpRequest, web::Payload, Data<T>)>(git_receive_pack),
42            )
43            .route("info/refs", web::to::<_, (HttpRequest, Data<T>)>(info_refs))
44            .route("HEAD", web::to::<_, (HttpRequest, Data<T>)>(get_text_file))
45            .route(
46                "objects/info/alternates",
47                web::to::<_, (HttpRequest, Data<T>)>(get_text_file),
48            )
49            .route(
50                "objects/info/http-alternates",
51                web::to::<_, (HttpRequest, Data<T>)>(get_text_file),
52            )
53            .route(
54                "objects/info/packs",
55                web::to::<_, (HttpRequest, Data<T>)>(objects_info_packs),
56            )
57            .route(
58                "objects/info/{rest:.*}",
59                web::to::<_, (HttpRequest, Data<T>)>(get_text_file),
60            )
61            .route(
62                "objects/pack/{pack}",
63                web::to::<_, (HttpRequest, Data<T>)>(objects_pack),
64            ),
65    );
66}