Support RSS feeds for custom searches

Fixes #45
This commit is contained in:
Zed
2019-09-28 03:22:46 +02:00
parent 6d61c203cf
commit 61991a9b56
3 changed files with 69 additions and 37 deletions

View File

@@ -19,6 +19,17 @@ template respRss*(rss: typed) =
proc createRssRouter*(cfg: Config) =
router rss:
get "/search/rss":
if @"text".len > 200:
resp Http400, showError("Search input too long.", cfg.title)
let query = initQuery(params(request))
if query.kind != custom:
resp Http400, showError("Only Tweet searches are allowed for RSS feeds.", cfg.title)
let tweets = await getSearch[Tweet](query, "", getAgent())
respRss(renderSearchRss(tweets.content, query.text, genQueryUrl(query)))
get "/@name/rss":
cond '.' notin @"name"
respRss(await showRss(@"name", Query()))

View File

@@ -10,7 +10,7 @@ export search
proc createSearchRouter*(cfg: Config) =
router search:
get "/search":
get "/search/?":
if @"text".len > 200:
resp Http400, showError("Search input too long.", cfg.title)
@@ -25,7 +25,9 @@ proc createSearchRouter*(cfg: Config) =
resp renderMain(renderUserSearch(users, prefs), request, cfg.title)
of custom:
let tweets = await getSearch[Tweet](query, @"after", getAgent())
resp renderMain(renderTweetSearch(tweets, prefs, getPath()), request, cfg.title)
let rss = "/search/rss?" & genQueryUrl(query)
resp renderMain(renderTweetSearch(tweets, prefs, getPath()), request,
cfg.title, rss=rss)
else:
resp Http404, showError("Invalid search.", cfg.title)