diff options
author | Ollie Phillips <oliver@eantics.co.uk> | 2019-05-09 16:14:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-09 16:14:15 +0100 |
commit | 75d316ccfb4500d618b8745a8c97ee9eac16c05b (patch) | |
tree | c322e6873e1f7a5c5bc4349fb5db5ebed8ab4e33 /system/api/handlers.go | |
parent | 8882d90229ec0fd8db592e15585e0627dca379d4 (diff) | |
parent | d337a2251d087e2d9bfc96ae130688a4dab6348f (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.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) { |