53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package cif
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
|
|
"git.fjla.uk/owlboard/timetable-mgr/log"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// Fetches the day string for the provided date.
|
|
func getDayString(t time.Time) string {
|
|
london, err := time.LoadLocation("Europe/London")
|
|
if err != nil {
|
|
log.Msg.Error("Unable to load time zone info", zap.Error(err))
|
|
}
|
|
|
|
timeNow := t.In(london)
|
|
day := timeNow.Weekday()
|
|
|
|
dayStrings := [...]string{"sun", "mon", "tue", "wed", "thu", "fri", "sat"}
|
|
|
|
return dayStrings[day]
|
|
}
|
|
|
|
// Simply returns the correct URL for either a 'daily' or 'full' update.
|
|
func getUpdateUrl(updateType string) (string, error) {
|
|
if updateType == "daily" {
|
|
return dailyUpdateUrl, nil
|
|
} else if updateType == "full" {
|
|
return fullUpdateUrl, nil
|
|
}
|
|
err := errors.New("invalid update type provided, must be one of 'daily' or 'full'")
|
|
return "", err
|
|
}
|
|
|
|
// Takes a time.Time as input and returns True if it is
|
|
// the same day as now, or false if it is not the same day as now
|
|
func isSameToday(t time.Time) bool {
|
|
today := time.Now().In(time.UTC)
|
|
return t.Year() == today.Year() && t.Month() == today.Month() && t.Day() == today.Day()
|
|
}
|
|
|
|
// Returns how many days ago `t` was compared to today
|
|
func howManyDaysAgo(t time.Time) int {
|
|
today := time.Now().In(time.UTC).Truncate(24 * time.Hour)
|
|
input := t.In(time.UTC).Truncate(24 * time.Hour)
|
|
|
|
diff := today.Sub(input)
|
|
days := int(diff.Hours() / 24)
|
|
return days
|
|
}
|