fix:#41 refactored fetcher functions

This commit is contained in:
Elmar Kresse
2024-06-24 10:50:18 +02:00
parent 381e5c6d2b
commit cb8de60d21

View File

@@ -62,40 +62,49 @@ func fetchHTMLFromURL(semester, seminarGroupLabel string) (string, error) {
func GetSeminarGroupEventsFromHTML(seminarGroupLabel string) (model.SeminarGroup, error) { func GetSeminarGroupEventsFromHTML(seminarGroupLabel string) (model.SeminarGroup, error) {
var seminarGroup [2]model.SeminarGroup var seminarGroup [2]model.SeminarGroup
var result string var errSS, errWS error
var errSS error
var errWS error
currentMonth := time.Now().Month() currentMonth := time.Now().Month()
if currentMonth >= 3 && currentMonth <= 10 {
result, errSS = fetchHTMLFromURL("ss", seminarGroupLabel) if isSummerSemester(currentMonth) {
if errSS == nil { seminarGroup[0], errSS = fetchAndParse("ss", seminarGroupLabel)
seminarGroup[0] = parseSeminarGroup(result) }
if isWinterSemester(currentMonth) {
seminarGroup[1], errWS = fetchAndParse("ws", seminarGroupLabel)
} }
} return checkForSuccessfulFetch(errSS, errWS, seminarGroup)
if currentMonth >= 9 || currentMonth <= 4 {
result, errWS = fetchHTMLFromURL("ws", seminarGroupLabel)
if errWS == nil {
seminarGroup[1] = parseSeminarGroup(result)
}
} }
if errSS != nil { func isSummerSemester(month time.Month) bool {
if errWS != nil { return month >= 3 && month <= 10
}
func isWinterSemester(month time.Month) bool {
return month >= 9 || month <= 4
}
func fetchAndParse(season, label string) (model.SeminarGroup, error) {
result, err := fetchHTMLFromURL(season, label)
if err != nil {
return model.SeminarGroup{}, err
}
return parseSeminarGroup(result), nil
}
func checkForSuccessfulFetch(errSS error, errWS error, seminarGroup [2]model.SeminarGroup) (model.SeminarGroup, error) {
switch {
case errSS != nil && errWS != nil:
return model.SeminarGroup{}, errWS return model.SeminarGroup{}, errWS
} else { case errSS != nil:
return seminarGroup[1], nil return seminarGroup[1], nil
} case errWS != nil:
} else {
if errWS != nil {
return seminarGroup[0], nil return seminarGroup[0], nil
} else { default:
seminarGroup[0].Events = append(seminarGroup[0].Events, seminarGroup[1].Events...) seminarGroup[0].Events = append(seminarGroup[0].Events, seminarGroup[1].Events...)
return seminarGroup[0], nil return seminarGroup[0], nil
} }
} }
}
func SplitEventType(events []model.Event) ([]model.Event, error) { func SplitEventType(events []model.Event) ([]model.Event, error) {
re, err := regexp.Compile("^([VPS])([wp])$") re, err := regexp.Compile("^([VPS])([wp])$")