summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCara Salter <cara@devcara.com>2021-12-22 11:48:59 -0500
committerCara Salter <cara@devcara.com>2021-12-22 11:48:59 -0500
commit7b455b6152c52059eec584b50d43522de4366a14 (patch)
treef847044912a0f4494e42970af80dffbe7061b013 /src
parent3d7cd8a7addd86b7a97a50821eb348345e0d427a (diff)
downloadsite-7b455b6152c52059eec584b50d43522de4366a14.tar.gz
site-7b455b6152c52059eec584b50d43522de4366a14.zip
code: Fix routing and fill out post templates
Diffstat (limited to 'src')
-rw-r--r--src/blog/post.rs17
-rw-r--r--src/main.rs17
2 files changed, 20 insertions, 14 deletions
diff --git a/src/blog/post.rs b/src/blog/post.rs
index 3c27690..3e4a0d6 100644
--- a/src/blog/post.rs
+++ b/src/blog/post.rs
@@ -12,6 +12,8 @@ pub struct Post {
pub body_html: String,
pub date: DateTime<FixedOffset>,
pub link: String,
+ pub author: String,
+ pub draft: bool,
}
impl Ord for Post {
@@ -43,12 +45,16 @@ async fn read_post(dir: &str, fname: PathBuf) -> Result<Post> {
let date: DateTime<FixedOffset> = DateTime::<Utc>::from_utc(NaiveDateTime::new(date, NaiveTime::from_hms(0,0,0)), Utc)
.with_timezone(&Utc)
.into();
+ let author = &front_matter.clone().author.unwrap_or("Cara Salter".to_string());
+ let draft = &front_matter.clone().draft.unwrap_or(false);
Ok(Post {
front_matter,
body_html,
- link,
- date
+ link,
+ date,
+ author: author.clone(),
+ draft: draft.clone(),
} )
}
@@ -61,8 +67,11 @@ pub async fn load(dir: &str) -> Result<Vec<Post>> {
.await
.into_iter()
.map(Result::unwrap)
+ .filter(|p| !p.draft)
.collect();
+ info!("Loaded {:?} posts", result.len());
+
if result.len() == 0 {
Err(eyre!("No posts found"))
} else {
@@ -81,6 +90,8 @@ mod frontmatter {
pub date: String,
pub series: Option<Vec<String>>,
pub tags: Option<Vec<String>>,
+ pub author: Option<String>,
+ pub draft: Option<bool>,
}
enum ParseState {
@@ -134,7 +145,7 @@ mod frontmatter {
}
}
_ => {
- panic!("Malformed frontmatter");
+ panic!("Malformed frontmatter: {:?}", input);
}
},
ParseState::SkipNewLine { end } => match ch {
diff --git a/src/main.rs b/src/main.rs
index e247211..0726f87 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -27,20 +27,15 @@ async fn main() -> Result<()> {
let index = warp::get().and(path::end().and_then(misc::handlers::index));
- let blog_base = warp::path!("blog" / ..);
- let blog_list = blog_base.and(give_site_state(state.clone())).and_then(blog::handlers::list);
- let blog_post = blog_base.and(
- warp::path!(String)
- .and(give_site_state(state.clone()))
- .and_then(blog::handlers::post),
- );
+ let blog_index = warp::path!("blog").and(give_site_state(state.clone())).and_then(blog::handlers::list);
+
+ let blog_post = warp::path!("blog" / String).and(give_site_state(state.clone())).and_then(blog::handlers::post);
+
+
let static_files = warp::path("static")
.and(warp::fs::dir("./statics"));
- let site = index
- .or(blog_list.or(blog_post))
- .or(static_files).with(warp::log("site"));
-
+ let site = index.or(blog_index.or(blog_post)).or(static_files).with(warp::log("site"));
let server = warp::serve(site);