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
|
type
|
||||||
Bakalari = ref object
|
Bakalari = ref object
|
||||||
|
website: Uri
|
||||||
accessToken: string
|
accessToken: string
|
||||||
refreshToken: string
|
refreshToken: string
|
||||||
|
|
||||||
|
let client = newHttpClient()
|
||||||
|
|
||||||
proc newBakalari*(website: Uri, username: string, password: string): Bakalari =
|
proc newBakalari*(website: Uri, username: string, password: string): Bakalari =
|
||||||
new result
|
new result
|
||||||
|
result.website = website
|
||||||
let
|
let
|
||||||
api = website / "api/login"
|
api = website / "api/login"
|
||||||
client = newHttpClient()
|
|
||||||
data = newMultipartData {
|
data = newMultipartData {
|
||||||
"client_id": "ANDR",
|
"client_id": "ANDR",
|
||||||
"grant_type": "password",
|
"grant_type": "password",
|
||||||
|
@ -21,3 +24,34 @@ proc newBakalari*(website: Uri, username: string, password: string): Bakalari =
|
||||||
root = body.parseJson
|
root = body.parseJson
|
||||||
result.accessToken = root["access_token"].getStr
|
result.accessToken = root["access_token"].getStr
|
||||||
result.refreshToken = root["refresh_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