base.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. // POST /api/login -> user.NewUserLoginHandler
  44. loginUserEndpoint := factory.NewAPIEndpoint(
  45. &types.APIRequestMetadata{
  46. Verb: types.APIVerbUpdate,
  47. Method: types.HTTPVerbPost,
  48. Path: &types.Path{
  49. Parent: basePath,
  50. RelativePath: "/login",
  51. },
  52. },
  53. )
  54. loginUserHandler := user.NewUserLoginHandler(
  55. config,
  56. factory.GetDecoderValidator(),
  57. factory.GetResultWriter(),
  58. )
  59. routes = append(routes, &Route{
  60. Endpoint: loginUserEndpoint,
  61. Handler: loginUserHandler,
  62. Router: r,
  63. })
  64. return routes
  65. }