-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaktualizovat_testovaci_data.sh
executable file
·91 lines (73 loc) · 2.22 KB
/
aktualizovat_testovaci_data.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env bash
set -e
mock_date="2022-08-13"
script_path="$(dirname "$(realpath -s "$0")")"
test_data_path="$script_path/pkg/bakalari/test_data"
username="$BAKALARI_USERNAME"
password="$BAKALARI_PASSWORD"
url="$BAKALARI_URL"
access_token=""
if [[ -z "$username" ]]; then
read -p "Zadejte uživatelské jméno: " username
fi
if [[ -z "$password" ]]; then
read -s -p "Zadejte heslo: " password
echo ""
fi
if [[ -z "$url" ]]; then
read -p "Zadejte adresu instance Bakalářů: " url
fi
# $1 - adresa
# $2 - metoda
# $3 - POST body
function fetch() {
local method="$2"
if [[ -z "$method" ]]; then
method="GET"
fi
curl \
--silent \
-X "$method" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Bearer $access_token" \
-d "$3" \
"$url$1"
}
## login
login="$(
fetch \
"/api/login" \
"POST" \
"client_id=ANDR&grant_type=password&username=$username&password=$password"
)"
access_token="$(echo "$login" | jq --raw-output '.access_token')"
# nahradíme uživatelovy tokeny, jelikož ty opravdu nechceme nikomu ukazovat
echo "$(echo $login | jq '.access_token = "<placeholder_access_token>" | .refresh_token = "<placeholder_refresh_token>"' > "$test_data_path/login.json")"
echo "login.json aktualizováno, $(echo "$login" | wc -c) bajtů"
## absence
absence="$(
fetch "/api/3/absence/student"
)"
echo $absence | jq . > "$test_data_path/timetable.json"
echo "absence.json aktualizováno, $(echo "$absence" | wc -c) bajtů"
## rozvrh
timetable="$(
fetch "/api/3/timetable/actual?date=$mock_date"
)"
echo $timetable | jq . > "$test_data_path/timetable.json"
echo "timetable.json aktualizováno, $(echo "$timetable" | wc -c) bajtů"
## události (events)
events="$(
fetch "/api/3/events?from=$mock_date"
)"
echo $events | jq . > "$test_data_path/events.json"
echo "events.json aktualizováno, $(echo "$events" | wc -c) bajtů"
## úkoly (homework)
## toto je prozatím v komentáři - např. naše škola moc úkoly na Bakalářích nepoužívá
## a proto jsou data vzaty z repa https://github.com/bakalari-api/bakalari-api-v3
#homework="$(
# fetch "/api/3/homeworks"
#)"
#
#echo $homework | jq . > "$test_data_path/homework.json"
#echo "homework.json aktualizováno, $(echo "$homework" | wc -c) bajtů"