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,38 +62,47 @@ func fetchHTMLFromURL(semester, seminarGroupLabel string) (string, error) {
func GetSeminarGroupEventsFromHTML(seminarGroupLabel string) (model.SeminarGroup, error) {
var seminarGroup [2]model.SeminarGroup
var result string
var errSS error
var errWS error
var errSS, errWS error
currentMonth := time.Now().Month()
if currentMonth >= 3 && currentMonth <= 10 {
result, errSS = fetchHTMLFromURL("ss", seminarGroupLabel)
if errSS == nil {
seminarGroup[0] = parseSeminarGroup(result)
}
if isSummerSemester(currentMonth) {
seminarGroup[0], errSS = fetchAndParse("ss", seminarGroupLabel)
}
if currentMonth >= 9 || currentMonth <= 4 {
result, errWS = fetchHTMLFromURL("ws", seminarGroupLabel)
if errWS == nil {
seminarGroup[1] = parseSeminarGroup(result)
}
if isWinterSemester(currentMonth) {
seminarGroup[1], errWS = fetchAndParse("ws", seminarGroupLabel)
}
if errSS != nil {
if errWS != nil {
return model.SeminarGroup{}, errWS
} else {
return seminarGroup[1], nil
}
} else {
if errWS != nil {
return seminarGroup[0], nil
} else {
seminarGroup[0].Events = append(seminarGroup[0].Events, seminarGroup[1].Events...)
return seminarGroup[0], nil
}
return checkForSuccessfulFetch(errSS, errWS, seminarGroup)
}
func isSummerSemester(month time.Month) bool {
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
case errSS != nil:
return seminarGroup[1], nil
case errWS != nil:
return seminarGroup[0], nil
default:
seminarGroup[0].Events = append(seminarGroup[0].Events, seminarGroup[1].Events...)
return seminarGroup[0], nil
}
}