diff --git a/src/cmd/server/handler/feeds.go b/src/cmd/server/handler/feeds.go index 46c069d..86a2d29 100644 --- a/src/cmd/server/handler/feeds.go +++ b/src/cmd/server/handler/feeds.go @@ -10,18 +10,18 @@ import ( func (h Handler) feeds(w http.ResponseWriter, r *http.Request) error { switch r.Method { - case http.MethodPost: + case http.MethodPost, http.MethodPut: if err := r.ParseForm(); err != nil { return err } - return h.feedsPost(r.Context(), r.Form) + return h.feedsUpsert(r.Context(), r.URL.Query().Get("id"), r.Form) default: http.NotFound(w, r) } return nil } -func (h Handler) feedsPost(ctx context.Context, form url.Values) error { +func (h Handler) feedsUpsert(ctx context.Context, id string, form url.Values) error { var req feeds.Version for k, v := range map[string]*string{ "Cron": &req.Cron, @@ -36,6 +36,9 @@ func (h Handler) feedsPost(ctx context.Context, form url.Values) error { } } - _, err := feeds.Insert(ctx, req.URL, req.Cron, req.Pattern, req.WebhookMethod, req.WebhookURL, req.WebhookBody) - return err + if id == "" { + _, err := feeds.Insert(ctx, req.URL, req.Cron, req.Pattern, req.WebhookMethod, req.WebhookURL, req.WebhookBody) + return err + } + return feeds.Update(ctx, id, req.URL, req.Cron, req.Pattern, req.WebhookMethod, req.WebhookURL, req.WebhookBody) } diff --git a/src/cmd/server/handler/testdata/index.tmpl b/src/cmd/server/handler/testdata/index.tmpl index 6631301..7307213 100644 --- a/src/cmd/server/handler/testdata/index.tmpl +++ b/src/cmd/server/handler/testdata/index.tmpl @@ -26,7 +26,7 @@ Update {{ .editing.URL }} (clear) {{ end }} -
+ {{ range $k, $v := .editing }} {{ if not (in $k "Created" "Deleted" "Updated" "ID") }}