aboutsummaryrefslogtreecommitdiff
path: root/src/bin/hyper.rs
diff options
context:
space:
mode:
authorGabriel A. Giovanini <mail@gabrielgio.me>2022-06-11 18:15:38 +0200
committerGabriel A. Giovanini <mail@gabrielgio.me>2022-06-11 18:15:38 +0200
commit6a31a30b98f7febe9ac0db74211ef074aefc7ad3 (patch)
tree9ce8694f0f37efcc5b1eb72d9e2d26731ad7ec6a /src/bin/hyper.rs
parent96c2cbe1850f95806cccb6f47a7739eb9c2ac860 (diff)
downloadmacroblog.rs-6a31a30b98f7febe9ac0db74211ef074aefc7ad3.tar.gz
macroblog.rs-6a31a30b98f7febe9ac0db74211ef074aefc7ad3.tar.bz2
macroblog.rs-6a31a30b98f7febe9ac0db74211ef074aefc7ad3.zip
feat: Add project tab
Diffstat (limited to 'src/bin/hyper.rs')
-rw-r--r--src/bin/hyper.rs36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/bin/hyper.rs b/src/bin/hyper.rs
index 3f23f18..f24cbe4 100644
--- a/src/bin/hyper.rs
+++ b/src/bin/hyper.rs
@@ -1,11 +1,10 @@
-use std::convert::Infallible;
-use std::{env};
-use std::net::SocketAddr;
-use hyper::{Body, Request, Response, Server};
use hyper::service::{make_service_fn, service_fn};
+use hyper::{Body, Request, Response, Server};
+use macroblog::blog::{render_index_page, render_post_page, render_projects};
use macroblog::router::Router;
-use macroblog::blog::{render_index_page, render_post_page};
-
+use std::convert::Infallible;
+use std::env;
+use std::net::SocketAddr;
async fn not_found() -> Result<Response<Body>, Infallible> {
let resp: Response<Body> = Response::builder()
@@ -15,7 +14,6 @@ async fn not_found() -> Result<Response<Body>, Infallible> {
Ok(resp)
}
-
async fn index() -> Result<Response<Body>, Infallible> {
let body = render_index_page();
@@ -28,6 +26,17 @@ async fn index() -> Result<Response<Body>, Infallible> {
Ok(resp)
}
+async fn projects() -> Result<Response<Body>, Infallible> {
+ let body = render_projects();
+
+ let resp: Response<Body> = Response::builder()
+ .status(200)
+ .header("posts-type", "text/html")
+ .body(body.into())
+ .unwrap();
+
+ Ok(resp)
+}
async fn post(path: &String) -> Result<Response<Body>, Infallible> {
let body = render_post_page(path);
@@ -46,20 +55,21 @@ async fn request(req: Request<Body>) -> Result<Response<Body>, Infallible> {
match Router::new(path) {
Router::Index => index().await,
+ Router::Projects => projects().await,
Router::Post { page } => post(&page).await,
- Router::NotFound => not_found().await
+ Router::NotFound => not_found().await,
}
}
-
#[tokio::main]
async fn main() {
- let port = env::var("PORT").unwrap_or("3000".into()).parse::<u16>().unwrap_or(3000);
+ let port = env::var("PORT")
+ .unwrap_or("3000".into())
+ .parse::<u16>()
+ .unwrap_or(3000);
let addr = SocketAddr::from(([0, 0, 0, 0], port));
- let make_svc = make_service_fn(|_conn| async {
- Ok::<_, Infallible>(service_fn(request))
- });
+ let make_svc = make_service_fn(|_conn| async { Ok::<_, Infallible>(service_fn(request)) });
let server = Server::bind(&addr).serve(make_svc);