morethantext-web/src/main.rs

62 lines
1.9 KiB
Rust
Raw Normal View History

2022-06-22 12:03:17 -04:00
use tide::{
http::StatusCode,
sessions::{MemoryStore, SessionMiddleware},
Request, Response,
};
2022-02-26 11:18:08 -05:00
2022-07-18 17:24:45 -04:00
mod morethantext;
mod settings;
2022-07-18 17:24:45 -04:00
use morethantext::MoreThanText;
use settings::Settings;
2022-02-26 11:18:08 -05:00
#[async_std::main]
async fn main() -> tide::Result<()> {
let sett = Settings::new().unwrap();
2022-12-02 10:34:45 -05:00
let app = app_setup(sett.data_dir.as_str()).await;
app.listen(format!("{}:{}", sett.address, sett.port))
.await?;
2022-02-26 11:18:08 -05:00
Ok(())
}
2022-12-02 10:34:45 -05:00
async fn app_setup(data_dir: &str) -> tide::Server<MoreThanText> {
let db = MoreThanText::new(data_dir).await.unwrap();
let mut app = tide::with_state(db);
2022-02-26 11:18:08 -05:00
app.at("/").get(home);
2022-06-24 08:22:17 -04:00
app.with(
SessionMiddleware::new(MemoryStore::new(), b"361f953f-56ba-45e6-86ab-9efbf61b745d")
.with_cookie_name("morethantext.sid"),
);
2022-02-26 11:18:08 -05:00
return app;
}
async fn home(_req: Request<MoreThanText>) -> tide::Result {
2022-06-02 13:14:14 -04:00
let mut res = Response::new(StatusCode::Ok);
2022-02-26 11:18:08 -05:00
res.set_body("<!DOCTYPE html>
<html>
<body>
<h1>Welcome to BaskinPrattle.</h1>
<p>The code for the site is <a href=\"https://gitea.baskinprattle.com/jbaskin/morethantext-web\">here</a>.</p>
<p>And the latest x86_64 Linux build is <a href=\"https://jenkins.baskinprattle.com/job/morethantext-web/\">here</a>.</p>
<p>There is also an ansible role for installation <a href=\"https://gitea.baskinprattle.com/jbaskin/role-morethantext.git\">here</a>.</p>
2022-02-26 11:18:08 -05:00
</body>
</html>");
res.append_header("Content-Type", "text/html; charset=UTF-8");
Ok(res)
}
#[cfg(test)]
mod server_app {
2022-02-26 11:18:08 -05:00
use super::*;
2022-12-02 10:34:45 -05:00
use tempfile::tempdir;
2022-02-26 11:18:08 -05:00
use tide_testing::TideTestingExt;
#[async_std::test]
async fn home_page_available() {
2022-12-02 10:34:45 -05:00
let dir = tempdir().unwrap();
let app = app_setup(dir.path().to_str().unwrap()).await;
2022-02-26 11:18:08 -05:00
let response = app.get("/").await.unwrap();
2022-06-02 13:14:14 -04:00
assert_eq!(response.status(), StatusCode::Ok);
2022-02-26 11:18:08 -05:00
}
}