diff options
author | Ollie Phillips <7113347+olliephillips@users.noreply.github.com> | 2019-08-01 16:48:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-01 16:48:22 +0100 |
commit | f0472b990d7022e2022538d54286bd11ecfaa912 (patch) | |
tree | 7928413f9d392e0fb2b683225dc6a7bcc5804ef6 /system/api/handlers.go | |
parent | 3ef2dc0da5d39686da48ac90e8a8a2c6b861e549 (diff) | |
parent | 4beb78e420595eea405566741490b2aa2f5e1854 (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.go | 73 |
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) { |