genmiddleware.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. continue
  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. if err != nil {
  56. return err
  57. }
  58. }
  59. return nil
  60. }