Skip to content
Snippets Groups Projects

add opengraph to posts and pages

Merged Stephen D requested to merge opengraph into master
4 files
+ 74
17
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 20
7
@@ -58,7 +58,7 @@ impl Blog {
content.push_str("</table>");
Ok(self.dress_page(None, &content))
Ok(self.dress_page(None, &content, None))
}
fn rss(&self) -> anyhow::Result<String> {
@@ -85,7 +85,7 @@ impl Blog {
Ok(out)
}
fn dress_page(&self, title: Option<&str>, content: &str) -> String {
fn dress_page(&self, title: Option<&str>, content: &str, head: Option<&str>) -> String {
let title = match title {
Some(title) => format!("{} | {}", title.trim(), self.config.name.trim()),
None => self.config.name.trim().to_string(),
@@ -109,8 +109,10 @@ impl Blog {
page_links.push_str(&p.link_short());
}
let head = head.unwrap_or("");
format!(
r#"<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/style.css" />{favicons}<title>{title}</title></head><body><div><a href="/">Home</a>{page_links}{logo}</div><hr>{content}</body></html>"#
r#"<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/style.css" />{favicons}<title>{title}</title>{head}</head><body><div><a href="/">Home</a>{page_links}{logo}</div><hr>{content}</body></html>"#
)
}
}
@@ -145,13 +147,21 @@ impl TryFrom<Blog> for RenderedBlog {
let mut pages = FnvHashMap::default();
for p in &b.posts {
let body = b.dress_page(Some(&p.title), &p.html()?);
let body = b.dress_page(
Some(&p.title),
&p.html()?,
Some(p.open_graph(&b.config.root, &b.config.logo)?.as_ref()),
);
insert_path(&mut pages, &p.url, Response::html(body))?;
}
for p in &b.pages {
let body = b.dress_page(Some(&p.title), &p.html()?);
let body = b.dress_page(
Some(&p.title),
&p.html()?,
Some(p.open_graph(&b.config.root, &b.config.logo)?.as_ref()),
);
insert_path(&mut pages, &p.url, Response::html(body))?;
}
@@ -184,8 +194,11 @@ impl TryFrom<Blog> for RenderedBlog {
Response::svg(include_bytes!("assets/rss.svg").to_vec()),
)?;
let not_found =
Response::html(b.dress_page(Some("Page not found"), include_str!("assets/404.html")));
let not_found = Response::html(b.dress_page(
Some("Page not found"),
include_str!("assets/404.html"),
None,
));
if let Some(fav) = b.favicon {
for (p, r) in fav.responses {
Loading