update for ical create process, new endpoints for frontend

This commit is contained in:
Elmar Kresse
2023-09-15 04:42:14 +02:00
parent eeb84db0cc
commit e1d143908a
10 changed files with 250 additions and 47 deletions

View File

@@ -12,8 +12,8 @@ import (
"net/http"
)
func getSeminarHTML() (string, error) {
url := "https://stundenplan.htwk-leipzig.de/stundenplan/xml/public/semgrp_ss.xml"
func getSeminarHTML(semester string) (string, error) {
url := "https://stundenplan.htwk-leipzig.de/stundenplan/xml/public/semgrp_" + semester + ".xml"
// Send GET request
response, err := http.Get(url)
@@ -41,14 +41,18 @@ func getSeminarHTML() (string, error) {
}
func SeminarGroups(c echo.Context, app *pocketbase.PocketBase) error {
result, _ := getSeminarHTML()
var groups []model.SeminarGroup
groups = parseSeminarGroups(result)
resultSummer, _ := getSeminarHTML("ss")
resultWinter, _ := getSeminarHTML("ws")
collection, dbError := findCollection(app, "groups")
groups = parseSeminarGroups(resultSummer)
groups = append(groups, parseSeminarGroups(resultWinter)...)
// filter duplicates
groups = removeDuplicates(groups)
collection, dbError := db.FindCollection(app, "groups")
if dbError != nil {
return apis.NewNotFoundError("Collection not found", dbError)
}
@@ -61,6 +65,25 @@ func SeminarGroups(c echo.Context, app *pocketbase.PocketBase) error {
return c.JSON(http.StatusOK, groups)
}
func removeDuplicates(groups []model.SeminarGroup) []model.SeminarGroup {
var uniqueGroups []model.SeminarGroup
for _, group := range groups {
if !contains(uniqueGroups, group) {
uniqueGroups = append(uniqueGroups, group)
}
}
return uniqueGroups
}
func contains(groups []model.SeminarGroup, group model.SeminarGroup) bool {
for _, a := range groups {
if a.Course == group.Course {
return true
}
}
return false
}
func parseSeminarGroups(result string) []model.SeminarGroup {
var studium model.Studium