import std/[asyncdispatch, httpclient] import std/[json, options] import types proc fediPost* (config: Config, text: string, visibility: PostVisibility): Future[JsonNode] {.async.} = let client = newAsyncHttpClient(userAgent = "travelynx2fedi", headers = newHttpHeaders({ "Authorization": "Bearer " & config.FediAccessToken })) var postData = newMultipartData({ "status": text, "language": "de", "visibility": $visibility }) if config.FediSpoilerText.isSome: postData["spoiler_text"] = config.FediSpoilerText.get let request = await client.request( httpmethod = HttpPost, url = config.FediURL & "/api/v1/statuses", multipart = postData ) result = parseJson(await request.body) result["responseCode"] = newJString($request.code) client.close() proc fediDelete* (config: Config, id: string): Future[JsonNode] {.async.} = let client = newAsyncHttpClient(userAgent = "travelynx2fedi", headers = newHttpHeaders({ "Authorization": "Bearer " & config.FediAccessToken })) let request = await client.request( httpmethod = HttpDelete, url = config.FediURL & "/api/v1/statuses/" & id, ) result = parseJson(await request.body) result["responseCode"] = newJString($request.code) client.close()