base.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package router
  2. import (
  3. "github.com/go-chi/chi"
  4. "github.com/porter-dev/porter/api/server/handlers/capabilities"
  5. "github.com/porter-dev/porter/api/server/handlers/user"
  6. "github.com/porter-dev/porter/api/server/shared"
  7. "github.com/porter-dev/porter/api/types"
  8. )
  9. func NewBaseRegisterer(children ...*Registerer) *Registerer {
  10. return &Registerer{
  11. GetRoutes: GetBaseRoutes,
  12. Children: children,
  13. }
  14. }
  15. func GetBaseRoutes(
  16. r chi.Router,
  17. config *shared.Config,
  18. basePath *types.Path,
  19. factory shared.APIEndpointFactory,
  20. children ...*Registerer,
  21. ) []*Route {
  22. routes := make([]*Route, 0)
  23. // GET /api/capabilities -> user.NewUserCreateHandler
  24. getCapabilitiesEndpoint := factory.NewAPIEndpoint(
  25. &types.APIRequestMetadata{
  26. Verb: types.APIVerbGet,
  27. Method: types.HTTPVerbGet,
  28. Path: &types.Path{
  29. Parent: basePath,
  30. RelativePath: "/capabilities",
  31. },
  32. },
  33. )
  34. getCapabilitiesHandler := capabilities.NewCapabilitiesGetHandler(
  35. config,
  36. factory.GetResultWriter(),
  37. )
  38. routes = append(routes, &Route{
  39. Endpoint: getCapabilitiesEndpoint,
  40. Handler: getCapabilitiesHandler,
  41. Router: r,
  42. })
  43. // POST /api/users -> user.NewUserCreateHandler
  44. createUserEndpoint := factory.NewAPIEndpoint(
  45. &types.APIRequestMetadata{
  46. Verb: types.APIVerbCreate,
  47. Method: types.HTTPVerbPost,
  48. Path: &types.Path{
  49. Parent: basePath,
  50. RelativePath: "/users",
  51. },
  52. },
  53. )
  54. createUserHandler := user.NewUserCreateHandler(
  55. config,
  56. factory.GetDecoderValidator(),
  57. factory.GetResultWriter(),
  58. )
  59. routes = append(routes, &Route{
  60. Endpoint: createUserEndpoint,
  61. Handler: createUserHandler,
  62. Router: r,
  63. })
  64. // POST /api/login -> user.NewUserLoginHandler
  65. loginUserEndpoint := factory.NewAPIEndpoint(
  66. &types.APIRequestMetadata{
  67. Verb: types.APIVerbUpdate,
  68. Method: types.HTTPVerbPost,
  69. Path: &types.Path{
  70. Parent: basePath,
  71. RelativePath: "/login",
  72. },
  73. },
  74. )
  75. loginUserHandler := user.NewUserLoginHandler(
  76. config,
  77. factory.GetDecoderValidator(),
  78. factory.GetResultWriter(),
  79. )
  80. routes = append(routes, &Route{
  81. Endpoint: loginUserEndpoint,
  82. Handler: loginUserHandler,
  83. Router: r,
  84. })
  85. // POST /api/cli/login/exchange -> user.NewCLILoginExchangeHandler
  86. cliLoginExchangeEndpoint := factory.NewAPIEndpoint(
  87. &types.APIRequestMetadata{
  88. Verb: types.APIVerbCreate,
  89. Method: types.HTTPVerbPost,
  90. Path: &types.Path{
  91. Parent: basePath,
  92. RelativePath: "/cli/login/exchange",
  93. },
  94. },
  95. )
  96. cliLoginExchangeHandler := user.NewCLILoginExchangeHandler(
  97. config,
  98. factory.GetDecoderValidator(),
  99. factory.GetResultWriter(),
  100. )
  101. routes = append(routes, &Route{
  102. Endpoint: cliLoginExchangeEndpoint,
  103. Handler: cliLoginExchangeHandler,
  104. Router: r,
  105. })
  106. // POST /api/password/reset/initiate -> user.NewUserPasswordInitiateResetHandler
  107. passwordInitiateResetEndpoint := factory.NewAPIEndpoint(
  108. &types.APIRequestMetadata{
  109. Verb: types.APIVerbCreate,
  110. Method: types.HTTPVerbPost,
  111. Path: &types.Path{
  112. Parent: basePath,
  113. RelativePath: "/password/reset/initiate",
  114. },
  115. },
  116. )
  117. passwordInitiateResetHandler := user.NewUserPasswordInitiateResetHandler(
  118. config,
  119. factory.GetDecoderValidator(),
  120. factory.GetResultWriter(),
  121. )
  122. routes = append(routes, &Route{
  123. Endpoint: passwordInitiateResetEndpoint,
  124. Handler: passwordInitiateResetHandler,
  125. Router: r,
  126. })
  127. // POST /api/password/reset/verify -> user.NewUserPasswordVerifyResetHandler
  128. passwordVerifyResetEndpoint := factory.NewAPIEndpoint(
  129. &types.APIRequestMetadata{
  130. Verb: types.APIVerbCreate,
  131. Method: types.HTTPVerbPost,
  132. Path: &types.Path{
  133. Parent: basePath,
  134. RelativePath: "/password/reset/verify",
  135. },
  136. },
  137. )
  138. passwordVerifyResetHandler := user.NewUserPasswordVerifyResetHandler(
  139. config,
  140. factory.GetDecoderValidator(),
  141. factory.GetResultWriter(),
  142. )
  143. routes = append(routes, &Route{
  144. Endpoint: passwordVerifyResetEndpoint,
  145. Handler: passwordVerifyResetHandler,
  146. Router: r,
  147. })
  148. // POST /api/password/reset/finalize -> user.NewUserPasswordFinalizeResetHandler
  149. passwordFinalizeResetEndpoint := factory.NewAPIEndpoint(
  150. &types.APIRequestMetadata{
  151. Verb: types.APIVerbCreate,
  152. Method: types.HTTPVerbPost,
  153. Path: &types.Path{
  154. Parent: basePath,
  155. RelativePath: "/password/reset/finalize",
  156. },
  157. },
  158. )
  159. passwordFinalizeResetHandler := user.NewUserPasswordFinalizeResetHandler(
  160. config,
  161. factory.GetDecoderValidator(),
  162. factory.GetResultWriter(),
  163. )
  164. routes = append(routes, &Route{
  165. Endpoint: passwordFinalizeResetEndpoint,
  166. Handler: passwordFinalizeResetHandler,
  167. Router: r,
  168. })
  169. return routes
  170. }