From 7b07c234c91fc977f03f4a0b0a2de42d7c792236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Bla=C5=BEek?= Date: Mon, 15 Jun 2020 15:33:08 +0200 Subject: [PATCH] =?UTF-8?q?More=20functions=20for=20Bakal=C3=A1=C5=99i=20c?= =?UTF-8?q?lient?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bakalari.nim | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/bakalari.nim b/bakalari.nim index fe69beb..236d4a4 100644 --- a/bakalari.nim +++ b/bakalari.nim @@ -2,14 +2,17 @@ import httpclient, json, uri type Bakalari = ref object + website: Uri accessToken: string refreshToken: string +let client = newHttpClient() + proc newBakalari*(website: Uri, username: string, password: string): Bakalari = new result + result.website = website let api = website / "api/login" - client = newHttpClient() data = newMultipartData { "client_id": "ANDR", "grant_type": "password", @@ -21,3 +24,34 @@ proc newBakalari*(website: Uri, username: string, password: string): Bakalari = root = body.parseJson result.accessToken = root["access_token"].getStr result.refreshToken = root["refresh_token"].getStr + +func accessToken*(bakalari: Bakalari): string = + bakalari.accessToken + +func refreshToken*(bakalari: Bakalari): string = + bakalari.refreshToken + +proc renewTokens(bakalari: Bakalari) = + let + api = bakalari.website / "api/login" + data = newMultipartData { + "client_id": "ANDR", + "grant_type": "refresh_token", + "refresh_token": bakalari.refreshToken, + } + response = client.post($api, multipart = data) + body = response.body + root = body.parseJson + bakalari.accessToken = root["access_token"].getStr + bakalari.refreshToken = root["refresh_token"].getStr + +proc getEndpoint*(bakalari: Bakalari, endpoint: string): JsonNode = + let + api = bakalari.website / "api/3" / endpoint + data = newMultipartData { + "Authorization": "Bearer " & bakalari.accessToken, + } + response = client.post($api, multipart = data) + body = response.body + bakalari.renewTokens + result = body.parseJson