genmiddleware.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package gogen
  2. import (
  3. "bytes"
  4. "strings"
  5. "text/template"
  6. "github.com/tal-tech/go-zero/tools/goctl/api/spec"
  7. "github.com/tal-tech/go-zero/tools/goctl/api/util"
  8. "github.com/tal-tech/go-zero/tools/goctl/config"
  9. "github.com/tal-tech/go-zero/tools/goctl/util/format"
  10. )
  11. var middlewareImplementCode = `
  12. package middleware
  13. import "net/http"
  14. type {{.name}} struct {
  15. }
  16. func New{{.name}}() *{{.name}} {
  17. return &{{.name}}{}
  18. }
  19. func (m *{{.name}})Handle(next http.HandlerFunc) http.HandlerFunc {
  20. return func(w http.ResponseWriter, r *http.Request) {
  21. // TODO generate middleware implement function, delete after code implementation
  22. // Passthrough to next handler if need
  23. next(w, r)
  24. }
  25. }
  26. `
  27. func genMiddleware(dir string, cfg *config.Config, api *spec.ApiSpec) error {
  28. var middlewares = getMiddleware(api)
  29. for _, item := range middlewares {
  30. middlewareFilename := strings.TrimSuffix(strings.ToLower(item), "middleware") + "_middleware"
  31. formatName, err := format.FileNamingFormat(cfg.NamingFormat, middlewareFilename)
  32. if err != nil {
  33. return err
  34. }
  35. filename := formatName + ".go"
  36. fp, created, err := util.MaybeCreateFile(dir, middlewareDir, filename)
  37. if err != nil {
  38. return err
  39. }
  40. if !created {
  41. return nil
  42. }
  43. defer fp.Close()
  44. name := strings.TrimSuffix(item, "Middleware") + "Middleware"
  45. t := template.Must(template.New("contextTemplate").Parse(middlewareImplementCode))
  46. buffer := new(bytes.Buffer)
  47. err = t.Execute(buffer, map[string]string{
  48. "name": strings.Title(name),
  49. })
  50. if err != nil {
  51. return err
  52. }
  53. formatCode := formatCode(buffer.String())
  54. _, err = fp.WriteString(formatCode)
  55. return err
  56. }
  57. return nil
  58. }