mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-12 10:35:39 +00:00
100 lines
3.0 KiB
Rust
100 lines
3.0 KiB
Rust
/*
|
|
* Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|