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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
mod add;
mod delete;
mod edit;
pub mod list;
mod view;
pub mod routes {
pub struct Sitekey {
pub list: &'static str,
pub add_easy: &'static str,
pub add_advance: &'static str,
pub view: &'static str,
pub edit_easy: &'static str,
pub edit_advance: &'static str,
pub delete: &'static str,
}
impl Sitekey {
pub const fn new() -> Self {
Sitekey {
list: "/sitekeys",
add_advance: "/sitekeys/advance/add",
add_easy: "/sitekeys/easy/add",
view: "/sitekey/{key}",
edit_advance: "/sitekey/{key}/advance/edit",
edit_easy: "/sitekey/{key}/easy/edit",
delete: "/sitekey/{key}/delete",
}
}
pub const fn get_sitemap() -> [&'static str; 2] {
const S: Sitekey = Sitekey::new();
[S.list, S.add_advance]
}
pub fn get_edit_easy(&self, key: &str) -> String {
self.edit_easy.replace("{key}", key)
}
pub fn get_edit_advance(&self, key: &str) -> String {
self.edit_advance.replace("{key}", key)
}
pub fn get_view(&self, key: &str) -> String {
self.view.replace("{key}", key)
}
pub fn get_delete(&self, key: &str) -> String {
self.delete.replace("{key}", key)
}
}
}
pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
cfg.service(add::advance);
cfg.service(add::easy);
cfg.service(list::list_sitekeys);
cfg.service(view::view_sitekey);
cfg.service(edit::advance);
cfg.service(edit::easy);
cfg.service(delete::delete_sitekey);
}
#[cfg(test)]
mod tests {
use super::routes::Sitekey;
#[test]
fn get_sitekey_routes_work() {
const ROUTES: Sitekey = Sitekey::new();
const KEY: &str = "foo";
let tests = [
(ROUTES.get_edit_easy(KEY), "/sitekey/foo/easy/edit"),
(ROUTES.get_edit_advance(KEY), "/sitekey/foo/advance/edit"),
(ROUTES.get_view(KEY), "/sitekey/foo"),
(ROUTES.get_delete(KEY), "/sitekey/foo/delete"),
];
for (r, l) in tests.iter() {
assert_eq!(r, l);
}
}
}