get rooms post
This commit is contained in:
parent
d8d1fc3679
commit
b54e97a99f
3 changed files with 70 additions and 11 deletions
73
Bot/Untis.go
73
Bot/Untis.go
|
|
@ -3,6 +3,7 @@ package Untis
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -13,6 +14,12 @@ type Params struct {
|
||||||
Password string `json:"key"`
|
Password string `json:"key"`
|
||||||
Client string `json:"client"`
|
Client string `json:"client"`
|
||||||
}
|
}
|
||||||
|
type getRooms struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Params Params `json:"params"`
|
||||||
|
Jsonrpc string `json:"jsonrpc:"`
|
||||||
|
}
|
||||||
type Login struct {
|
type Login struct {
|
||||||
Id string `json:"id"`
|
Id string `json:"id"`
|
||||||
Method string `json:"method"`
|
Method string `json:"method"`
|
||||||
|
|
@ -34,25 +41,73 @@ var Url = "https://thalia.webuntis.com/WebUntis/jsonrpc.do?school=Mons_Tabor"
|
||||||
var Password = os.Getenv("UNTIS_PASSWORD")
|
var Password = os.Getenv("UNTIS_PASSWORD")
|
||||||
var USERS = os.Getenv("UNTIS_USER")
|
var USERS = os.Getenv("UNTIS_USER")
|
||||||
|
|
||||||
func Auth() {
|
func Main() {
|
||||||
|
cookies, err := Auth()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Rooms(cookies)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Auth() ([]*http.Cookie, error) {
|
||||||
l := Login{"2023-05-06 15:44:22.215292", "authenticate", Params{os.Getenv("UNTIS_USER"), os.Getenv("UNTIS_PASSWORD"), "WebUntis Test"}, "2.0"}
|
l := Login{"2023-05-06 15:44:22.215292", "authenticate", Params{os.Getenv("UNTIS_USER"), os.Getenv("UNTIS_PASSWORD"), "WebUntis Test"}, "2.0"}
|
||||||
loginJSON, err := json.Marshal(l)
|
loginJSON, err := json.Marshal(l)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Error marshaling login data: %v", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
login := bytes.NewReader(loginJSON)
|
login := bytes.NewReader(loginJSON)
|
||||||
|
|
||||||
|
log.Println("Run")
|
||||||
|
LoginOut, err := http.Post(Url, "application/json", login)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error during authentication: %v", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer LoginOut.Body.Close()
|
||||||
|
|
||||||
|
// Parse cookies from response
|
||||||
|
cookies := LoginOut.Cookies()
|
||||||
|
log.Println("Received cookies:", cookies)
|
||||||
|
return cookies, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func Rooms(cookies []*http.Cookie) {
|
||||||
|
log.Println("Abrufen der Stunden")
|
||||||
|
g := getRooms{"2023-05-06 15:44:22.215292", "getRooms", Params{}, "2.0"}
|
||||||
|
roomsJson, err := json.Marshal(g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error marshaling login data: %v", err)
|
log.Fatalf("Error marshaling login data: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
rooms := bytes.NewReader(roomsJson)
|
||||||
|
|
||||||
log.Println("Run")
|
prompt, err := http.NewRequest("POST", Url, rooms)
|
||||||
LoginOut, err := http.Post(Url, "application/json", login)
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error during authentication: %v", err)
|
log.Fatalf("Error creatingrequest: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer LoginOut.Body.Close()
|
log.Println(prompt)
|
||||||
out := LoginOut.Header.Values("Set-Cookie")
|
log.Println("Cookie: ", cookies)
|
||||||
|
for _, cookie := range cookies {
|
||||||
log.Println(out)
|
prompt.AddCookie(cookie)
|
||||||
|
log.Println("prompt ", prompt)
|
||||||
|
}
|
||||||
|
out, err := http.DefaultClient.Do(prompt)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error during request: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer out.Body.Close()
|
||||||
|
log.Println(out.Status)
|
||||||
|
response, err := io.ReadAll(out.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error reading response body: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
responseString := string(response)
|
||||||
|
log.Println("Repsonse ", responseString)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1 +1,5 @@
|
||||||
# Discord bot for logging Untis timetable
|
# Discord bot for logging Untis timetable to a Discord Webhook
|
||||||
|
create .env with Credentials
|
||||||
|
UNTIS_PASSWORD
|
||||||
|
UNTIS_USER
|
||||||
|
DISCORD_WEBHOOK_URL
|
||||||
2
main.go
2
main.go
|
|
@ -43,7 +43,7 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
go Untis.Auth() //starting API calls function
|
go Untis.Main() //starting API calls function
|
||||||
// Create a channel to receive OS signals
|
// Create a channel to receive OS signals
|
||||||
sigChan := make(chan os.Signal, 1)
|
sigChan := make(chan os.Signal, 1)
|
||||||
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue