summaryrefslogtreecommitdiff
path: root/system/api/handlers.go
diff options
context:
space:
mode:
authorOllie Phillips <7113347+olliephillips@users.noreply.github.com>2019-08-01 16:48:22 +0100
committerGitHub <noreply@github.com>2019-08-01 16:48:22 +0100
commitf0472b990d7022e2022538d54286bd11ecfaa912 (patch)
tree7928413f9d392e0fb2b683225dc6a7bcc5804ef6 /system/api/handlers.go
parent3ef2dc0da5d39686da48ac90e8a8a2c6b861e549 (diff)
parent4beb78e420595eea405566741490b2aa2f5e1854 (diff)
Merge pull request #311 from ponzu-cms/ponzu-dev
Merging ponzu-dev to master as v0.11.0
Diffstat (limited to 'system/api/handlers.go')
-rw-r--r--system/api/handlers.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/system/api/handlers.go b/system/api/handlers.go
index 20356e9..99db799 100644
--- a/system/api/handlers.go
+++ b/system/api/handlers.go
@@ -100,7 +100,31 @@ func contentsHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ // assert hookable
+ get := it()
+ hook, ok := get.(item.Hookable)
+ if !ok {
+ log.Println("[Response] error: Type", t, "does not implement item.Hookable or embed item.Item.")
+ res.WriteHeader(http.StatusBadRequest)
+ return
+ }
+
+ // hook before response
+ j, err = hook.BeforeAPIResponse(res, req, j)
+ if err != nil {
+ log.Println("[Response] error calling BeforeAPIResponse:", err)
+ res.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+
sendData(res, req, j)
+
+ // hook after response
+ err = hook.AfterAPIResponse(res, req, j)
+ if err != nil {
+ log.Println("[Response] error calling AfterAPIResponse:", err)
+ return
+ }
}
func contentHandler(res http.ResponseWriter, req *http.Request) {
@@ -156,7 +180,31 @@ func contentHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ // assert hookable
+ get := p
+ hook, ok := get.(item.Hookable)
+ if !ok {
+ log.Println("[Response] error: Type", t, "does not implement item.Hookable or embed item.Item.")
+ res.WriteHeader(http.StatusBadRequest)
+ return
+ }
+
+ // hook before response
+ j, err = hook.BeforeAPIResponse(res, req, j)
+ if err != nil {
+ log.Println("[Response] error calling BeforeAPIResponse:", err)
+ res.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+
sendData(res, req, j)
+
+ // hook after response
+ err = hook.AfterAPIResponse(res, req, j)
+ if err != nil {
+ log.Println("[Response] error calling AfterAPIResponse:", err)
+ return
+ }
}
func contentHandlerBySlug(res http.ResponseWriter, req *http.Request) {
@@ -206,7 +254,32 @@ func contentHandlerBySlug(res http.ResponseWriter, req *http.Request) {
return
}
+ // assert hookable
+ get := p
+ hook, ok := get.(item.Hookable)
+ if !ok {
+ log.Println("[Response] error: Type", t, "does not implement item.Hookable or embed item.Item.")
+ res.WriteHeader(http.StatusBadRequest)
+ return
+ }
+
+ // hook before response
+ j, err = hook.BeforeAPIResponse(res, req, j)
+ if err != nil {
+ log.Println("[Response] error calling BeforeAPIResponse:", err)
+ res.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+
sendData(res, req, j)
+
+ // hook after response
+ err = hook.AfterAPIResponse(res, req, j)
+ if err != nil {
+ log.Println("[Response] error calling AfterAPIResponse:", err)
+ return
+ }
+
}
func uploadsHandler(res http.ResponseWriter, req *http.Request) {