39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
use crate::prelude::*;
|
|
|
|
localize!("en-US", "src/base/module/homepage/locales");
|
|
|
|
pub struct HomepageModule;
|
|
|
|
impl Module for HomepageModule {
|
|
fn name(&self) -> String {
|
|
l("module_name")
|
|
}
|
|
|
|
fn description(&self) -> String {
|
|
l("module_desc")
|
|
}
|
|
|
|
fn configure_module(&self, cfg: &mut server::web::ServiceConfig) {
|
|
cfg.service(
|
|
server::web::resource("/")
|
|
.route(server::web::get().to(greet))
|
|
);
|
|
cfg.service(
|
|
server::web::resource("/{name}")
|
|
.route(server::web::get().to(greet_with_param))
|
|
);
|
|
}
|
|
}
|
|
|
|
async fn greet() -> impl server::Responder {
|
|
t("greeting", &args!["name" => config_get!("app.name")])
|
|
}
|
|
|
|
async fn greet_with_param(req: server::HttpRequest) -> server::HttpResponse {
|
|
let name: String = req.match_info().get("name").unwrap_or("World").into();
|
|
let args = args!["name" => name];
|
|
server::HttpResponse::Ok()
|
|
.body(sycamore::render_to_string(|ctx| sycamore::view! { ctx,
|
|
p { (t("greeting", &args)) }
|
|
}))
|
|
}
|