diff options
author | Simon Ser <contact@emersion.fr> | 2020-05-20 19:32:53 +0200 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-05-20 19:32:53 +0200 |
commit | 811891134ee9d4da5a217a670ac5a2dcd0202059 (patch) | |
tree | 11edbba3b81f32bd13a92bd65852d8a42dc51af8 /plugins/caldav/routes.go | |
parent | 8813faf71ed98cd60dc099e08d57002acb516878 (diff) | |
download | alps-811891134ee9d4da5a217a670ac5a2dcd0202059.tar.gz alps-811891134ee9d4da5a217a670ac5a2dcd0202059.zip |
plugins/caldav: add time inputs in event create/update form
Diffstat (limited to 'plugins/caldav/routes.go')
-rw-r--r-- | plugins/caldav/routes.go | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/plugins/caldav/routes.go b/plugins/caldav/routes.go index f0c9573..f9e6bd5 100644 --- a/plugins/caldav/routes.go +++ b/plugins/caldav/routes.go @@ -53,6 +53,21 @@ func parseObjectPath(s string) (string, error) { return string(p), nil } +func parseTime(dateStr, timeStr string) (time.Time, error) { + layout := inputDateLayout + s := dateStr + if timeStr != "" { + layout = inputDateLayout + "T" + inputTimeLayout + s = dateStr + "T" + timeStr + } + t, err := time.Parse(layout, s) + if err != nil { + err = fmt.Errorf("malformed date: %v", err) + return time.Time{}, echo.NewHTTPError(http.StatusBadRequest, err) + } + return t, nil +} + func registerRoutes(p *alps.GoPlugin, u *url.URL) { p.GET("/calendar", func(ctx *alps.Context) error { var start time.Time @@ -242,15 +257,14 @@ func registerRoutes(p *alps.GoPlugin, u *url.URL) { summary := ctx.FormValue("summary") description := ctx.FormValue("description") - start, err := time.Parse("2006-01-02", ctx.FormValue("start")) + // TODO: whole-day events + start, err := parseTime(ctx.FormValue("start-date"), ctx.FormValue("start-time")) if err != nil { - err = fmt.Errorf("malformed start date: %v", err) - return echo.NewHTTPError(http.StatusBadRequest, err) + return err } - end, err := time.Parse("2006-01-02", ctx.FormValue("end")) + end, err := parseTime(ctx.FormValue("end-date"), ctx.FormValue("end-time")) if err != nil { - err = fmt.Errorf("malformed end date: %v", err) - return echo.NewHTTPError(http.StatusBadRequest, err) + return err } if start.After(end) { return echo.NewHTTPError(http.StatusBadRequest, "event start is after its end") |