2 Commits

View File

@ -13,6 +13,7 @@ import (
"go.uber.org/zap" "go.uber.org/zap"
"log" "log"
"net/http" "net/http"
"net/url"
"os" "os"
"os/signal" "os/signal"
"syscall" "syscall"
@ -73,11 +74,17 @@ type CalendarHandler struct{}
func (c *CalendarHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) { func (c *CalendarHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) {
now := time.Now() now := time.Now()
calDavHolidays, err := cal.IsHolidaysFromCaldav(now)
if err != nil {
zap.S().Warnf("unable to read holiday status from caldav: %v", err)
calDavHolidays = false
}
cd := CalendarDay{ cd := CalendarDay{
Day: now, Day: now,
WorkingDay: cal.IsWorkingDay(now), WorkingDay: cal.IsWorkingDay(now),
Ferie: cal.IsHoliday(now), Ferie: cal.IsHoliday(now),
Holiday: cal.IsHoliday(now), Holiday: calDavHolidays,
Weekday: cal.IsWeekDay(now), Weekday: cal.IsWeekDay(now),
} }
@ -97,6 +104,7 @@ func (c *CalendarHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) {
func main() { func main() {
var port int var port int
var host string var host string
var user, pwd string
var caldavUrl, caldavPath, caldavSummaryPattern string var caldavUrl, caldavPath, caldavSummaryPattern string
flag.StringVar(&host, "host", "", "host to listen, default all addresses") flag.StringVar(&host, "host", "", "host to listen, default all addresses")
@ -104,6 +112,8 @@ func main() {
flag.StringVar(&caldavUrl, "caldav-url", "", "caldav url to use to read holidays events") flag.StringVar(&caldavUrl, "caldav-url", "", "caldav url to use to read holidays events")
flag.StringVar(&caldavPath, "caldav-path", "", "caldav path to use to read holidays events") flag.StringVar(&caldavPath, "caldav-path", "", "caldav path to use to read holidays events")
flag.StringVar(&caldavSummaryPattern, "caldav-summary-pattern", "Holidays", "Summary pattern that matches holidays event") flag.StringVar(&caldavSummaryPattern, "caldav-summary-pattern", "Holidays", "Summary pattern that matches holidays event")
flag.StringVar(&user, "caldav-username", "", "Username credential")
flag.StringVar(&pwd, "caldav-password", "", "Password credential")
flag.Parse() flag.Parse()
logLevel := zap.LevelFlag("log", zap.InfoLevel, "log level") logLevel := zap.LevelFlag("log", zap.InfoLevel, "log level")
@ -125,7 +135,13 @@ func main() {
}() }()
zap.ReplaceGlobals(lgr) zap.ReplaceGlobals(lgr)
cdav, err := calendar.NewCaldav(caldavUrl, caldavPath) urlCaldav, err := url.Parse(caldavUrl)
if err != nil {
zap.S().Panicf("invalid caldav url '%v': %v", caldavUrl, err)
}
urlCaldav.User = url.UserPassword(user, pwd)
cdav, err := calendar.NewCaldav(urlCaldav.String(), caldavPath)
if err != nil { if err != nil {
zap.S().Fatal("unable to init caldav instance") zap.S().Fatal("unable to init caldav instance")
} }
@ -161,6 +177,9 @@ func main() {
SkipOnErr: false, SkipOnErr: false,
Check: func(ctx context.Context) error { Check: func(ctx context.Context) error {
_, err := cal.IsHolidaysFromCaldav(time.Now()) _, err := cal.IsHolidaysFromCaldav(time.Now())
if err != nil {
zap.S().Warnf("unable to check caldav connection: %v", err)
}
return err return err
}, },
}), }),