mirror of
https://codeberg.org/grunfink/snac2.git
synced 2025-01-13 09:33:39 +00:00
html.c: RSS: fix.
Feed title, and description is not properly rendered. So here goes a fix that instead of using encode_html TWICE, We use sanitize() for feed description instead. Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
parent
d3e0f7a84b
commit
7e273a73eb
1 changed files with 9 additions and 7 deletions
16
html.c
16
html.c
|
@ -1899,23 +1899,25 @@ int html_get_handler(const xs_dict *req, const char *q_path,
|
|||
if (!xs_startswith(id, snac.actor))
|
||||
continue;
|
||||
|
||||
xs *es1 = sanitize(xs_dict_get(msg, "content"));
|
||||
xs *content = encode_html(es1);
|
||||
xs *content = sanitize(xs_dict_get(msg, "content"));
|
||||
|
||||
// We SHOULD only use sanitized one for description.
|
||||
// So, only encode for feed title, while the description just keep it sanitized as is.
|
||||
xs *es_title_enc = encode_html(xs_dict_get(msg, "content"));
|
||||
xs *es_title = xs_replace(es_title_enc, "<br>", "\n");
|
||||
xs *title = xs_str_new(NULL);
|
||||
int i;
|
||||
|
||||
for (i = 0; content[i] && content[i] != '<' && content[i] != '&' && i < 40; i++)
|
||||
title = xs_append_m(title, &content[i], 1);
|
||||
for (i = 0; es_title[i] && es_title[i] != '\n' && i < 50; i++)
|
||||
title = xs_append_m(title, &es_title[i], 1);
|
||||
|
||||
xs *es11 = encode_html(title);
|
||||
xs *es12 = encode_html(content);
|
||||
xs *s = xs_fmt(
|
||||
"<item>\n"
|
||||
"<title>%s...</title>\n"
|
||||
"<link>%s</link>\n"
|
||||
"<description>%s</description>\n"
|
||||
"</item>\n",
|
||||
es11, id, es12
|
||||
title, id, content
|
||||
);
|
||||
|
||||
rss = xs_str_cat(rss, s);
|
||||
|
|
Loading…
Reference in a new issue