mirror of
https://github.com/zedeus/nitter.git
synced 2024-09-29 06:42:01 +00:00
32 lines
740 B
Nim
32 lines
740 B
Nim
import httpclient, asyncdispatch, htmlparser
|
|
import strutils, json, xmltree, uri
|
|
|
|
template newClient*() {.dirty.} =
|
|
var client = newAsyncHttpClient()
|
|
defer: client.close()
|
|
client.headers = headers
|
|
|
|
proc fetchHtml*(url: Uri; headers: HttpHeaders; jsonKey = ""): Future[XmlNode] {.async.} =
|
|
newClient()
|
|
|
|
var resp = ""
|
|
try:
|
|
resp = await client.getContent($url)
|
|
except:
|
|
return nil
|
|
|
|
if jsonKey.len > 0:
|
|
let json = parseJson(resp)[jsonKey].str
|
|
return parseHtml(json)
|
|
else:
|
|
return parseHtml(resp)
|
|
|
|
proc fetchJson*(url: Uri; headers: HttpHeaders): Future[JsonNode] {.async.} =
|
|
newClient()
|
|
|
|
var resp = ""
|
|
try:
|
|
resp = await client.getContent($url)
|
|
result = parseJson(resp)
|
|
except:
|
|
return nil
|