Put real feed url into feed

Instead of hardcoding the feed file name to be feed.atom, it has been
configurable for a while. This is now also reflected in the feed itself.

Signed-off-by: Jacob Kiers <jacob@jacobkiers.net>
This commit is contained in:
Jacob Kiers 2022-12-14 15:25:28 +01:00
parent 34d301590e
commit 21bdb9488e
2 changed files with 12 additions and 11 deletions

View File

@ -57,10 +57,11 @@ pub(crate) fn add_entry_to_feed(
feed.entries.push(entry);
}
pub(crate) fn build_atom_feed(hostname: &String) -> Feed {
pub(crate) fn build_atom_feed(hostname: &String, feed_file: &str) -> Feed {
let feed_url = format!("https://{}/{}", hostname, feed_file);
FeedBuilder::default()
.title("JJKiers Newsletters")
.id(format!("https://{}/feed.atom", hostname))
.id(&feed_url)
.link(
LinkBuilder::default()
.href(format!("https://{}/", hostname))
@ -69,7 +70,7 @@ pub(crate) fn build_atom_feed(hostname: &String) -> Feed {
)
.link(
LinkBuilder::default()
.href(format!("https://{}/feed.atom", hostname))
.href(&feed_url)
.rel("self".to_string())
.build(),
)

View File

@ -70,7 +70,11 @@ fn build_feed(filename: &PathBuf, hostname: String, include_html: bool) -> Resul
create_directory(dir)?;
let mut feed = feed::build_atom_feed(&hostname);
let feed_file = filename
.file_name().expect("Feed path should have a file name")
.to_str().expect("Feed path should be printable.");
let mut feed = feed::build_atom_feed(&hostname, feed_file);
let mut reader = DataDirectoryMessageReader::new((&Path::new("data")).to_path_buf());
@ -110,13 +114,9 @@ fn build_feed(filename: &PathBuf, hostname: String, include_html: bool) -> Resul
println!("Writing feed to {}", filename.display());
feed.set_stylesheet(Some("feed.xsl".into()));
let _ = write_file(filename, feed.to_string())?;
let _ = write_file(dir.join("feed.xsl"), FEED_STYLESHEET)?;
// Another ugly hack, but I don't know how to do this better...
let file_name = format!("{:?}", filename.file_name().unwrap()).replace('"', "");
write_file(dir.join("index.html"), INDEX_HTML.replace("{FEED}", file_name.as_str()))?;
write_file(filename, feed.to_string())?;
write_file(dir.join("feed.xsl"), FEED_STYLESHEET)?;
write_file(dir.join("index.html"), INDEX_HTML.replace("{FEED}", feed_file))?;
}
println!("Finished building the feed.");