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 }}
-