base.go 4.6 KB

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