mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender-pwa.git
synced 2025-07-16 09:38:51 +02:00
fix:#41 refactored fetcher functions
This commit is contained in:
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user