summaryrefslogtreecommitdiff
path: root/system/api/handlers.go
diff options
context:
space:
mode:
authorOllie Phillips <oliver@eantics.co.uk>2019-05-09 16:14:15 +0100
committerGitHub <noreply@github.com>2019-05-09 16:14:15 +0100
commit75d316ccfb4500d618b8745a8c97ee9eac16c05b (patch)
treec322e6873e1f7a5c5bc4349fb5db5ebed8ab4e33 /system/api/handlers.go
parent8882d90229ec0fd8db592e15585e0627dca379d4 (diff)
parentd337a2251d087e2d9bfc96ae130688a4dab6348f (diff)
Merge pull request #305 from olliephillips/ponzu-dev
Tentatively merging this @nilslice. The code and markdown docs are complete I think. As I understand it, you'll need to merge it to master. I can't do that - and a good thing too ;) I'll do the same on the main docs repo also
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) {