diff --git a/src/query.nim b/src/query.nim index 46be5cf..0bb641e 100644 --- a/src/query.nim +++ b/src/query.nim @@ -68,10 +68,10 @@ proc genQueryParam*(query: Query): string = for f in query.filters: filters.add "filter:" & f - for i in query.includes: - filters.add "include:" & i for e in query.excludes: filters.add "-filter:" & e + for i in query.includes: + filters.add "include:" & i result = strip(param & filters.join(&" {query.sep} ")) if query.since.len > 0: @@ -83,7 +83,7 @@ proc genQueryParam*(query: Query): string = if query.text.len > 0: result &= " " & query.text -proc genQueryUrl*(query: Query): string = +proc genQueryUrl*(query: Query; onlyParam=false): string = if query.fromUser.len > 0: result = "/" & query.fromUser.join(",") @@ -93,7 +93,10 @@ proc genQueryUrl*(query: Query): string = if query.kind notin {custom, users}: return result & &"/{query.kind}?" - result &= &"/search?" + if onlyParam: + result = "" + else: + result &= &"/search?" var params = @[&"kind={query.kind}"] if query.text.len > 0: @@ -102,7 +105,7 @@ proc genQueryUrl*(query: Query): string = params.add "f-" & f & "=on" for e in query.excludes: params.add "e-" & e & "=on" - for i in query.excludes: + for i in query.includes: params.add "i-" & i & "=on" if query.since.len > 0: diff --git a/src/routes/rss.nim b/src/routes/rss.nim index d4529f7..fa4acb8 100644 --- a/src/routes/rss.nim +++ b/src/routes/rss.nim @@ -30,3 +30,7 @@ proc createRssRouter*(cfg: Config) = get "/@name/media/rss": cond '.' notin @"name" respRss(await showRss(@"name", getMediaQuery(@"name"))) + + get "/@name/search/rss": + cond '.' notin @"name" + respRss(await showRss(@"name", initQuery(params(request), name=(@"name")))) diff --git a/src/routes/timeline.nim b/src/routes/timeline.nim index 92fcf8c..41f3742 100644 --- a/src/routes/timeline.nim +++ b/src/routes/timeline.nim @@ -80,12 +80,6 @@ proc createTimelineRouter*(cfg: Config) = respTimeline(await showTimeline(@"name", @"after", Query(), cookiePrefs(), getPath(), cfg.title, rss)) - get "/@name/search": - cond '.' notin @"name" - let query = initQuery(params(request), name=(@"name")) - respTimeline(await showTimeline(@"name", @"after", query, cookiePrefs(), - getPath(), cfg.title, "")) - get "/@name/replies": cond '.' notin @"name" let rss = "/$1/replies/rss" % @"name" @@ -98,6 +92,13 @@ proc createTimelineRouter*(cfg: Config) = respTimeline(await showTimeline(@"name", @"after", getMediaQuery(@"name"), cookiePrefs(), getPath(), cfg.title, rss)) + get "/@name/search": + cond '.' notin @"name" + let query = initQuery(params(request), name=(@"name")) + let rss = "/$1/search/rss?$2" % [@"name", genQueryUrl(query, onlyParam=true)] + respTimeline(await showTimeline(@"name", @"after", query, cookiePrefs(), + getPath(), cfg.title, rss)) + get "/@name/status/@id": cond '.' notin @"name" let prefs = cookiePrefs()