diff --git a/services/data-manager/service/fetch/v1/fetchSeminarEventService.go b/services/data-manager/service/fetch/v1/fetchSeminarEventService.go index 801bd2a..e2a8780 100644 --- a/services/data-manager/service/fetch/v1/fetchSeminarEventService.go +++ b/services/data-manager/service/fetch/v1/fetchSeminarEventService.go @@ -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 } }