From cd1fd532e6425e93af8881242e2ecf3548dec0db Mon Sep 17 00:00:00 2001 From: blankie Date: Fri, 22 Dec 2023 15:58:43 +1100 Subject: [PATCH] RSS: Fix URLs to point to the correct feed and page Fixes #1131 --- src/routes/rss.nim | 12 +++++++----- src/views/rss.nimf | 25 +++++++++++++++++++------ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/routes/rss.nim b/src/routes/rss.nim index 447f4ad..5672b7e 100644 --- a/src/routes/rss.nim +++ b/src/routes/rss.nim @@ -15,7 +15,7 @@ proc redisKey*(page, name, cursor: string): string = if cursor.len > 0: result &= ":" & cursor -proc timelineRss*(req: Request; cfg: Config; query: Query): Future[Rss] {.async.} = +proc timelineRss*(req: Request; cfg: Config; query: Query; tab, param: string): Future[Rss] {.async.} = var profile: Profile let name = req.params.getOrDefault("name") @@ -39,7 +39,7 @@ proc timelineRss*(req: Request; cfg: Config; query: Query): Future[Rss] {.async. return Rss(feed: profile.user.username, cursor: "suspended") if profile.user.fullname.len > 0: - let rss = renderTimelineRss(profile, cfg, multi=(names.len > 1)) + let rss = renderTimelineRss(profile, cfg, tab, param, multi=(names.len > 1)) return Rss(feed: rss, cursor: profile.tweets.bottom) template respRss*(rss, page) = @@ -94,7 +94,7 @@ proc createRssRouter*(cfg: Config) = if rss.cursor.len > 0: respRss(rss, "User") - rss = await timelineRss(request, cfg, Query(fromUser: @[name])) + rss = await timelineRss(request, cfg, Query(fromUser: @[name]), "", "") await cacheRss(key, rss) respRss(rss, "User") @@ -113,8 +113,10 @@ proc createRssRouter*(cfg: Config) = of "search": initQuery(params(request), name=name) else: Query(fromUser: @[name]) + let param = if tab != "search": "" + else: genQueryUrl(query) let searchKey = if tab != "search": "" - else: ":" & $hash(genQueryUrl(query)) + else: ":" & $hash(param) let key = redisKey(tab, name & searchKey, getCursor()) @@ -122,7 +124,7 @@ proc createRssRouter*(cfg: Config) = if rss.cursor.len > 0: respRss(rss, "User") - rss = await timelineRss(request, cfg, query) + rss = await timelineRss(request, cfg, query, tab, param) await cacheRss(key, rss) respRss(rss, "User") diff --git a/src/views/rss.nimf b/src/views/rss.nimf index 036a7b9..4586446 100644 --- a/src/views/rss.nimf +++ b/src/views/rss.nimf @@ -82,8 +82,20 @@ Twitter feed for: ${desc}. Generated by ${cfg.hostname} #end for #end proc # -#proc renderTimelineRss*(profile: Profile; cfg: Config; multi=false): string = +#proc renderTimelineRss*(profile: Profile; cfg: Config; tab, param: string; multi=false): string = #let urlPrefix = getUrlPrefix(cfg) +#var atomLink = &"{urlPrefix}/{profile.user.username}" +#var link = &"{urlPrefix}/{profile.user.username}" +#if tab != "": +# atomLink &= "/" & tab +# link &= "/" & tab +#end if +#atomLink &= "/rss" +#if param != "": +# let escParam = xmltree.escape(param) +# atomLink &= "?" & escParam +# link &= "?" & escParam +#end if #result = "" #let handle = (if multi: "" else: "@") & profile.user.username #var title = profile.user.fullname @@ -93,9 +105,9 @@ Twitter feed for: ${desc}. Generated by ${cfg.hostname} - + ${title} - ${urlPrefix}/${profile.user.username} + ${link} ${getDescription(handle, cfg)} en-us 40 @@ -131,15 +143,16 @@ ${renderRssTweets(tweets, cfg)} #end proc # #proc renderSearchRss*(tweets: seq[Tweets]; name, param: string; cfg: Config): string = -#let link = &"{getUrlPrefix(cfg)}/search" +#let urlPrefix = getUrlPrefix(cfg) #let escName = xmltree.escape(name) +#let escParam = xmltree.escape(param) #result = "" - + Search results for "${escName}" - ${link} + ${urlPrefix}/search?${escParam} ${getDescription(&"Search \"{escName}\"", cfg)} en-us 40