More functions for Bakaláři client
This commit is contained in:
parent
81f54bd6d6
commit
7b07c234c9
36
bakalari.nim
36
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
|
||||
|
|
Loading…
Reference in New Issue