12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- use dotenv;
- use tide::utils::After;
-
- mod fs;
- mod middleware;
- mod post;
- mod routes;
- mod templates;
- mod util;
-
- use middleware::*;
-
- #[derive(Clone)]
- pub struct State {
- pub login_path: String,
- }
-
- pub async fn build_app() -> Result<tide::Server<State>, tide::Error> {
- dotenv::dotenv().ok();
-
- let login_path = std::env::var("LOGIN_PATH").unwrap_or(String::from("/login"));
- let mut app = tide::with_state(State {
- login_path: login_path.clone(),
- });
-
- app.with(After(errors));
- app.with(session());
-
- app.at("/").get(routes::index);
- app.at("/static/:filename").get(routes::static_file);
- app.at("/posts")
- .with(require_auth)
- .post(routes::create_post);
- app.at("/posts/new")
- .with(require_auth)
- .get(routes::new_post);
- app.at("/posts/:slug").get(routes::single_post);
- app.at("/posts/:slug")
- .with(require_auth)
- .post(routes::update_post)
- .delete(routes::delete_post);
- app.at("/posts/:slug/edit")
- .with(require_auth)
- .get(routes::edit_post);
- app.at(&login_path)
- .with(require_guest)
- .get(routes::login_page)
- .post(routes::login);
- app.at("/preview")
- .with(require_auth)
- .post(routes::preview_post);
- app.at("/logout").with(require_auth).post(routes::logout);
-
- Ok(app)
- }
|