base.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package router
  2. import (
  3. "github.com/go-chi/chi"
  4. "github.com/porter-dev/porter/api/server/handlers/user"
  5. "github.com/porter-dev/porter/api/server/shared"
  6. "github.com/porter-dev/porter/api/types"
  7. )
  8. func NewBaseRegisterer(children ...*Registerer) *Registerer {
  9. return &Registerer{
  10. GetRoutes: GetBaseRoutes,
  11. Children: children,
  12. }
  13. }
  14. func GetBaseRoutes(
  15. r chi.Router,
  16. config *shared.Config,
  17. basePath *types.Path,
  18. factory shared.APIEndpointFactory,
  19. children ...*Registerer,
  20. ) []*Route {
  21. routes := make([]*Route, 0)
  22. // POST /api/users -> user.NewUserCreateHandler
  23. createUserEndpoint := factory.NewAPIEndpoint(
  24. &types.APIRequestMetadata{
  25. Verb: types.APIVerbCreate,
  26. Method: types.HTTPVerbPost,
  27. Path: &types.Path{
  28. Parent: basePath,
  29. RelativePath: "/users",
  30. },
  31. },
  32. )
  33. createUserHandler := user.NewUserCreateHandler(
  34. config,
  35. factory.GetDecoderValidator(),
  36. factory.GetResultWriter(),
  37. )
  38. routes = append(routes, &Route{
  39. Endpoint: createUserEndpoint,
  40. Handler: createUserHandler,
  41. Router: r,
  42. })
  43. return routes
  44. }