handler.go 923 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package fire
  2. import (
  3. "net/http"
  4. "git.mokkon.com/sainw/server_helper.git/util"
  5. )
  6. func ApiHandler(ep *EndPoint) http.Handler {
  7. fn := func(w http.ResponseWriter, r *http.Request) util.Return {
  8. ctx := r.Context()
  9. err := ep.Load(ctx, r)
  10. if err != nil {
  11. return util.NewErrorStatus().SetMessage(err.Error())
  12. }
  13. var doc map[string]interface{}
  14. switch r.Method {
  15. case "POST":
  16. if doc, err = ep.Post(ctx); err != nil {
  17. return util.NewErrorStatus().SetMessage(err.Error())
  18. }
  19. case "PUT":
  20. if doc, err = ep.Put(ctx); err != nil {
  21. return util.NewErrorStatus().SetMessage(err.Error())
  22. }
  23. case "DELETE":
  24. if doc, err = ep.Delete(ctx); err != nil {
  25. return util.NewErrorStatus().SetMessage(err.Error())
  26. }
  27. default:
  28. return util.NewErrorStatus().SetMessage("invalid method")
  29. }
  30. return util.NewOkStatus().SetData(doc)
  31. }
  32. return util.NoCache(util.Cors(Auth(ep.app, util.Json(fn))))
  33. }