builder.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package gateway
  2. import (
  3. "fmt"
  4. "git.sxidc.com/go-framework/baize/framework/core/api"
  5. )
  6. type Builder struct {
  7. router api.Router
  8. httpMethod string
  9. relativePath string
  10. }
  11. func (builder *Builder) Url(httpMethod string, relativePath string) *Builder {
  12. newBuilder := builder.copy()
  13. newBuilder.httpMethod = httpMethod
  14. newBuilder.relativePath = relativePath
  15. return newBuilder
  16. }
  17. func (builder *Builder) Request() *Builder {
  18. newBuilder := builder.copy()
  19. return newBuilder
  20. }
  21. func (builder *Builder) Response() *Builder {
  22. newBuilder := builder.copy()
  23. return newBuilder
  24. }
  25. func (builder *Builder) PassThrough() *Builder {
  26. newBuilder := builder.copy()
  27. return newBuilder
  28. }
  29. func (builder *Builder) Build(middlewares ...api.Handler) {
  30. newBuilder := builder.copy()
  31. newBuilder.router.AddRoute(builder.httpMethod, builder.relativePath, append(middlewares,
  32. func(c *api.Context) {
  33. fmt.Println("Come Here!!!")
  34. })...)
  35. }
  36. func (builder *Builder) copy() *Builder {
  37. newBuilder := &Builder{
  38. router: builder.router,
  39. httpMethod: builder.httpMethod,
  40. relativePath: builder.relativePath,
  41. }
  42. return newBuilder
  43. }