diff options
author | Steve Manuel <nilslice@gmail.com> | 2017-05-24 02:54:38 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-24 02:54:38 -0700 |
commit | 47d5ad5e4233b35cb9296835f135055986c9e7ee (patch) | |
tree | a21e7ccfd437206a298b9cfd89e853377b599695 | |
parent | e97450a30b24c747d3c3702329a27bb70eeb9b34 (diff) | |
parent | f24c9896a0e91235d0190f617f05cee0256fc2e9 (diff) |
Merge pull request #149 from ponzu-cms/ponzu-dev
[core] deserialize content data into item.Hookable method receivers
-rw-r--r-- | system/admin/handlers.go | 28 | ||||
-rw-r--r-- | system/api/create.go | 13 | ||||
-rw-r--r-- | system/api/delete.go | 12 | ||||
-rw-r--r-- | system/api/update.go | 13 |
4 files changed, 66 insertions, 0 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go index babcff1..3933d3d 100644 --- a/system/admin/handlers.go +++ b/system/admin/handlers.go @@ -1926,6 +1926,23 @@ func editHandler(res http.ResponseWriter, req *http.Request) { return } + // Let's be nice and make a proper item for the Hookable methods + dec := schema.NewDecoder() + dec.IgnoreUnknownKeys(true) + dec.SetAliasTag("json") + err = dec.Decode(post, req.PostForm) + if err != nil { + log.Println("Error decoding post form for edit handler:", t, err) + res.WriteHeader(http.StatusBadRequest) + errView, err := Error400() + if err != nil { + return + } + + res.Write(errView) + return + } + if cid == "-1" { err = hook.BeforeAdminCreate(res, req) if err != nil { @@ -2061,6 +2078,17 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) { return } + data, err := db.Content(t + ":" + id) + if err != nil { + log.Println("Error in db.Content ", t+":"+id, err) + return + } + + err = json.Unmarshal(data, post) + if err != nil { + log.Println("Error unmarshalling ", t, "=", id, err, " Hooks will be called on a zero-value.") + } + reject := req.URL.Query().Get("reject") if reject == "true" { err = hook.BeforeReject(res, req) diff --git a/system/api/create.go b/system/api/create.go index 3328bd6..3b748cc 100644 --- a/system/api/create.go +++ b/system/api/create.go @@ -12,6 +12,8 @@ import ( "github.com/ponzu-cms/ponzu/system/admin/upload" "github.com/ponzu-cms/ponzu/system/db" "github.com/ponzu-cms/ponzu/system/item" + + "github.com/gorilla/schema" ) // Createable accepts or rejects external POST requests to endpoints such as: @@ -131,6 +133,17 @@ func createContentHandler(res http.ResponseWriter, req *http.Request) { return } + // Let's be nice and make a proper item for the Hookable methods + dec := schema.NewDecoder() + dec.IgnoreUnknownKeys(true) + dec.SetAliasTag("json") + err = dec.Decode(post, req.PostForm) + if err != nil { + log.Println("Error decoding post form for edit handler:", t, err) + res.WriteHeader(http.StatusBadRequest) + return + } + err = hook.BeforeAPICreate(res, req) if err != nil { log.Println("[Create] error calling BeforeAccept:", err) diff --git a/system/api/delete.go b/system/api/delete.go index 36f2b1b..37328e4 100644 --- a/system/api/delete.go +++ b/system/api/delete.go @@ -65,6 +65,18 @@ func deleteContentHandler(res http.ResponseWriter, req *http.Request) { return } + b, err := db.Content(t + ":" + id) + if err != nil { + log.Println("Error in db.Content ", t+":"+id, err) + res.WriteHeader(http.StatusBadRequest) + return + } + + err = json.Unmarshal(b, post) + if err != nil { + log.Println("Error unmarshalling ", t, "=", id, err, " Hooks will be called on a zero-value.") + } + err = hook.BeforeAPIDelete(res, req) if err != nil { log.Println("[Delete] error calling BeforeAPIDelete:", err) diff --git a/system/api/update.go b/system/api/update.go index 9414ab4..36ffaeb 100644 --- a/system/api/update.go +++ b/system/api/update.go @@ -12,6 +12,8 @@ import ( "github.com/ponzu-cms/ponzu/system/admin/upload" "github.com/ponzu-cms/ponzu/system/db" "github.com/ponzu-cms/ponzu/system/item" + + "github.com/gorilla/schema" ) // Updateable accepts or rejects update POST requests to endpoints such as: @@ -132,6 +134,17 @@ func updateContentHandler(res http.ResponseWriter, req *http.Request) { return } + // Let's be nice and make a proper item for the Hookable methods + dec := schema.NewDecoder() + dec.IgnoreUnknownKeys(true) + dec.SetAliasTag("json") + err = dec.Decode(post, req.PostForm) + if err != nil { + log.Println("Error decoding post form for edit handler:", t, err) + res.WriteHeader(http.StatusInternalServerError) + return + } + err = hook.BeforeAPIUpdate(res, req) if err != nil { log.Println("[Update] error calling BeforeAPIUpdate:", err) |