Make queries non-optional

This commit is contained in:
Zed
2019-09-19 02:23:22 +02:00
parent 53c6247d8b
commit bd774cf0ca
10 changed files with 48 additions and 64 deletions

View File

@@ -9,7 +9,7 @@ proc getResult[T](json: JsonNode; query: Query; after: string): Result[T] =
hasMore: json["has_more_items"].to(bool),
maxId: json.getOrDefault("max_position").getStr(""),
minId: json.getOrDefault("min_position").getStr("").cleanPos(),
query: some query,
query: query,
beginning: after.len == 0
)
@@ -42,14 +42,14 @@ proc getSearch*[T](query: Query; after, agent: string): Future[Result[T]] {.asyn
}
let json = await fetchJson(base / searchUrl ? params, headers)
if json == nil: return Result[T](query: some query)
if json == nil: return Result[T](query: query)
result = getResult[T](json, query, after)
if not json.hasKey("items_html"): return
let html = parseHtml(json["items_html"].to(string))
when T is Tweet:
result = await finishTimeline(json, some query, after, agent)
result = await finishTimeline(json, query, after, agent)
elif T is Profile:
result.hasMore = json["items_html"].to(string) != "\n"
for p in html.selectAll(".js-stream-item"):

View File

@@ -4,7 +4,7 @@ import sequtils, strutils, json, xmltree, uri
import ".."/[types, parser, parserutils, formatters, query]
import utils, consts, media
proc finishTimeline*(json: JsonNode; query: Option[Query]; after, agent: string): Future[Timeline] {.async.} =
proc finishTimeline*(json: JsonNode; query: Query; after, agent: string): Future[Timeline] {.async.} =
if json == nil: return Timeline()
result = Timeline(
@@ -49,7 +49,7 @@ proc getTimeline*(username, after, agent: string): Future[Timeline] {.async.} =
params.add {"max_position": after}
let json = await fetchJson(base / (timelineUrl % username) ? params, headers)
result = await finishTimeline(json, none Query, after, agent)
result = await finishTimeline(json, Query(), after, agent)
proc getProfileAndTimeline*(username, agent, after: string): Future[(Profile, Timeline)] {.async.} =
let headers = newHttpHeaders({