rss: add <pubDate> field, fixes #356 (#358)

* rss: add <pubDate> field, fixes #356

* rss: also add pub_date on user feed

* fix(fmt)

---------

Co-authored-by: Matthew Esposito <matt@matthew.science>
This commit is contained in:
Martin Lindhe 2025-02-03 04:00:44 +01:00 committed by GitHub
parent adf25cb15b
commit fd1c32f555
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 8 additions and 2 deletions

5
Cargo.lock generated
View file

@ -274,9 +274,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "chrono" name = "chrono"
version = "0.4.38" version = "0.4.39"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825"
dependencies = [ dependencies = [
"num-traits", "num-traits",
] ]
@ -1367,6 +1367,7 @@ dependencies = [
"brotli", "brotli",
"build_html", "build_html",
"cached", "cached",
"chrono",
"clap", "clap",
"common-words-all", "common-words-all",
"cookie", "cookie",

View file

@ -51,6 +51,7 @@ common-words-all = { version = "0.0.2", default-features = false, features = ["e
hyper-rustls = { version = "0.24.2", features = [ "http2" ] } hyper-rustls = { version = "0.24.2", features = [ "http2" ] }
tegen = "0.1.4" tegen = "0.1.4"
serde_urlencoded = "0.7.1" serde_urlencoded = "0.7.1"
chrono = { version = "0.4.39", default-features = false, features = [ "std" ] }
htmlescape = "0.3.1" htmlescape = "0.3.1"

View file

@ -11,6 +11,7 @@ use hyper::{Body, Request, Response};
use log::{debug, trace}; use log::{debug, trace};
use rinja::Template; use rinja::Template;
use chrono::DateTime;
use once_cell::sync::Lazy; use once_cell::sync::Lazy;
use regex::Regex; use regex::Regex;
use time::{Duration, OffsetDateTime}; use time::{Duration, OffsetDateTime};
@ -607,6 +608,7 @@ pub async fn rss(req: Request<Body>) -> Result<Response<Body>, String> {
link: Some(utils::get_post_url(&post)), link: Some(utils::get_post_url(&post)),
author: Some(post.author.name), author: Some(post.author.name),
content: Some(rewrite_urls(&post.body)), content: Some(rewrite_urls(&post.body)),
pub_date: Some(DateTime::from_timestamp(post.created_ts as i64, 0).unwrap_or_default().to_rfc2822()),
description: Some(format!( description: Some(format!(
"<a href='{}{}'>Comments</a>", "<a href='{}{}'>Comments</a>",
config::get_setting("REDLIB_FULL_URL").unwrap_or_default(), config::get_setting("REDLIB_FULL_URL").unwrap_or_default(),

View file

@ -5,6 +5,7 @@ use crate::client::json;
use crate::server::RequestExt; use crate::server::RequestExt;
use crate::utils::{error, filter_posts, format_url, get_filters, nsfw_landing, param, setting, template, Post, Preferences, User}; use crate::utils::{error, filter_posts, format_url, get_filters, nsfw_landing, param, setting, template, Post, Preferences, User};
use crate::{config, utils}; use crate::{config, utils};
use chrono::DateTime;
use hyper::{Body, Request, Response}; use hyper::{Body, Request, Response};
use rinja::Template; use rinja::Template;
use time::{macros::format_description, OffsetDateTime}; use time::{macros::format_description, OffsetDateTime};
@ -165,6 +166,7 @@ pub async fn rss(req: Request<Body>) -> Result<Response<Body>, String> {
title: Some(post.title.to_string()), title: Some(post.title.to_string()),
link: Some(utils::get_post_url(&post)), link: Some(utils::get_post_url(&post)),
author: Some(post.author.name), author: Some(post.author.name),
pub_date: Some(DateTime::from_timestamp(post.created_ts as i64, 0).unwrap_or_default().to_rfc2822()),
content: Some(rewrite_urls(&post.body)), content: Some(rewrite_urls(&post.body)),
..Default::default() ..Default::default()
}) })