base.go 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. package router
  2. import (
  3. "github.com/go-chi/chi"
  4. "github.com/porter-dev/porter/api/server/handlers/gitinstallation"
  5. "github.com/porter-dev/porter/api/server/handlers/metadata"
  6. "github.com/porter-dev/porter/api/server/handlers/release"
  7. "github.com/porter-dev/porter/api/server/handlers/user"
  8. "github.com/porter-dev/porter/api/server/shared"
  9. "github.com/porter-dev/porter/api/server/shared/config"
  10. "github.com/porter-dev/porter/api/types"
  11. )
  12. func NewBaseRegisterer(children ...*Registerer) *Registerer {
  13. return &Registerer{
  14. GetRoutes: GetBaseRoutes,
  15. Children: children,
  16. }
  17. }
  18. func GetBaseRoutes(
  19. r chi.Router,
  20. config *config.Config,
  21. basePath *types.Path,
  22. factory shared.APIEndpointFactory,
  23. children ...*Registerer,
  24. ) []*Route {
  25. routes := make([]*Route, 0)
  26. // GET /api/capabilities -> user.NewUserCreateHandler
  27. getMetadataEndpoint := factory.NewAPIEndpoint(
  28. &types.APIRequestMetadata{
  29. Verb: types.APIVerbGet,
  30. Method: types.HTTPVerbGet,
  31. Path: &types.Path{
  32. Parent: basePath,
  33. RelativePath: "/metadata",
  34. },
  35. },
  36. )
  37. getMetadataHandler := metadata.NewMetadataGetHandler(
  38. config,
  39. factory.GetResultWriter(),
  40. )
  41. routes = append(routes, &Route{
  42. Endpoint: getMetadataEndpoint,
  43. Handler: getMetadataHandler,
  44. Router: r,
  45. })
  46. // POST /api/users -> user.NewUserCreateHandler
  47. createUserEndpoint := factory.NewAPIEndpoint(
  48. &types.APIRequestMetadata{
  49. Verb: types.APIVerbCreate,
  50. Method: types.HTTPVerbPost,
  51. Path: &types.Path{
  52. Parent: basePath,
  53. RelativePath: "/users",
  54. },
  55. },
  56. )
  57. createUserHandler := user.NewUserCreateHandler(
  58. config,
  59. factory.GetDecoderValidator(),
  60. factory.GetResultWriter(),
  61. )
  62. routes = append(routes, &Route{
  63. Endpoint: createUserEndpoint,
  64. Handler: createUserHandler,
  65. Router: r,
  66. })
  67. // POST /api/login -> user.NewUserLoginHandler
  68. loginUserEndpoint := factory.NewAPIEndpoint(
  69. &types.APIRequestMetadata{
  70. Verb: types.APIVerbUpdate,
  71. Method: types.HTTPVerbPost,
  72. Path: &types.Path{
  73. Parent: basePath,
  74. RelativePath: "/login",
  75. },
  76. },
  77. )
  78. loginUserHandler := user.NewUserLoginHandler(
  79. config,
  80. factory.GetDecoderValidator(),
  81. factory.GetResultWriter(),
  82. )
  83. routes = append(routes, &Route{
  84. Endpoint: loginUserEndpoint,
  85. Handler: loginUserHandler,
  86. Router: r,
  87. })
  88. // POST /api/cli/login/exchange -> user.NewCLILoginExchangeHandler
  89. cliLoginExchangeEndpoint := factory.NewAPIEndpoint(
  90. &types.APIRequestMetadata{
  91. Verb: types.APIVerbCreate,
  92. Method: types.HTTPVerbPost,
  93. Path: &types.Path{
  94. Parent: basePath,
  95. RelativePath: "/cli/login/exchange",
  96. },
  97. },
  98. )
  99. cliLoginExchangeHandler := user.NewCLILoginExchangeHandler(
  100. config,
  101. factory.GetDecoderValidator(),
  102. factory.GetResultWriter(),
  103. )
  104. routes = append(routes, &Route{
  105. Endpoint: cliLoginExchangeEndpoint,
  106. Handler: cliLoginExchangeHandler,
  107. Router: r,
  108. })
  109. // POST /api/password/reset/initiate -> user.NewUserPasswordInitiateResetHandler
  110. passwordInitiateResetEndpoint := factory.NewAPIEndpoint(
  111. &types.APIRequestMetadata{
  112. Verb: types.APIVerbCreate,
  113. Method: types.HTTPVerbPost,
  114. Path: &types.Path{
  115. Parent: basePath,
  116. RelativePath: "/password/reset/initiate",
  117. },
  118. },
  119. )
  120. passwordInitiateResetHandler := user.NewUserPasswordInitiateResetHandler(
  121. config,
  122. factory.GetDecoderValidator(),
  123. factory.GetResultWriter(),
  124. )
  125. routes = append(routes, &Route{
  126. Endpoint: passwordInitiateResetEndpoint,
  127. Handler: passwordInitiateResetHandler,
  128. Router: r,
  129. })
  130. // POST /api/password/reset/verify -> user.NewUserPasswordVerifyResetHandler
  131. passwordVerifyResetEndpoint := factory.NewAPIEndpoint(
  132. &types.APIRequestMetadata{
  133. Verb: types.APIVerbCreate,
  134. Method: types.HTTPVerbPost,
  135. Path: &types.Path{
  136. Parent: basePath,
  137. RelativePath: "/password/reset/verify",
  138. },
  139. },
  140. )
  141. passwordVerifyResetHandler := user.NewUserPasswordVerifyResetHandler(
  142. config,
  143. factory.GetDecoderValidator(),
  144. factory.GetResultWriter(),
  145. )
  146. routes = append(routes, &Route{
  147. Endpoint: passwordVerifyResetEndpoint,
  148. Handler: passwordVerifyResetHandler,
  149. Router: r,
  150. })
  151. // POST /api/password/reset/finalize -> user.NewUserPasswordFinalizeResetHandler
  152. passwordFinalizeResetEndpoint := factory.NewAPIEndpoint(
  153. &types.APIRequestMetadata{
  154. Verb: types.APIVerbCreate,
  155. Method: types.HTTPVerbPost,
  156. Path: &types.Path{
  157. Parent: basePath,
  158. RelativePath: "/password/reset/finalize",
  159. },
  160. },
  161. )
  162. passwordFinalizeResetHandler := user.NewUserPasswordFinalizeResetHandler(
  163. config,
  164. factory.GetDecoderValidator(),
  165. factory.GetResultWriter(),
  166. )
  167. routes = append(routes, &Route{
  168. Endpoint: passwordFinalizeResetEndpoint,
  169. Handler: passwordFinalizeResetHandler,
  170. Router: r,
  171. })
  172. // POST /api/webhooks/deploy/{token} -> release.NewWebhookHandler
  173. webhookEndpoint := factory.NewAPIEndpoint(
  174. &types.APIRequestMetadata{
  175. Verb: types.APIVerbUpdate,
  176. Method: types.HTTPVerbPost,
  177. Path: &types.Path{
  178. Parent: basePath,
  179. RelativePath: "/webhooks/deploy/{token}",
  180. },
  181. Scopes: []types.PermissionScope{},
  182. },
  183. )
  184. webhookHandler := release.NewWebhookHandler(
  185. config,
  186. factory.GetDecoderValidator(),
  187. factory.GetResultWriter(),
  188. )
  189. routes = append(routes, &Route{
  190. Endpoint: webhookEndpoint,
  191. Handler: webhookHandler,
  192. Router: r,
  193. })
  194. // GET /api/integrations/github-app/oauth -> gitinstallation.NewGithubAppOAuthStartHandler
  195. githubAppOAuthStartEndpoint := factory.NewAPIEndpoint(
  196. &types.APIRequestMetadata{
  197. Verb: types.APIVerbGet,
  198. Method: types.HTTPVerbGet,
  199. Path: &types.Path{
  200. Parent: basePath,
  201. RelativePath: "/integrations/github-app/oauth",
  202. },
  203. Scopes: []types.PermissionScope{},
  204. },
  205. )
  206. githubAppOAuthStartHandler := gitinstallation.NewGithubAppOAuthStartHandler(
  207. config,
  208. )
  209. routes = append(routes, &Route{
  210. Endpoint: githubAppOAuthStartEndpoint,
  211. Handler: githubAppOAuthStartHandler,
  212. Router: r,
  213. })
  214. // GET /api/integrations/github-app/install
  215. githubAppInstallEndpoint := factory.NewAPIEndpoint(
  216. &types.APIRequestMetadata{
  217. Verb: types.APIVerbGet,
  218. Method: types.HTTPVerbGet,
  219. Path: &types.Path{
  220. Parent: basePath,
  221. RelativePath: "/integrations/github-app/install",
  222. },
  223. Scopes: []types.PermissionScope{},
  224. },
  225. )
  226. githubAppInstallHandler := gitinstallation.NewGithubAppInstallHandler(
  227. config,
  228. )
  229. routes = append(routes, &Route{
  230. Endpoint: githubAppInstallEndpoint,
  231. Handler: githubAppInstallHandler,
  232. Router: r,
  233. })
  234. // POST /api/integrations/github-app/webhook
  235. githubAppWebhookEndpoint := factory.NewAPIEndpoint(
  236. &types.APIRequestMetadata{
  237. Verb: types.APIVerbCreate,
  238. Method: types.HTTPVerbPost,
  239. Path: &types.Path{
  240. Parent: basePath,
  241. RelativePath: "/integrations/github-app/webhook",
  242. },
  243. Scopes: []types.PermissionScope{},
  244. },
  245. )
  246. githubAppWebhookHandler := gitinstallation.NewGithubAppWebhookHandler(
  247. config,
  248. factory.GetDecoderValidator(),
  249. factory.GetResultWriter(),
  250. )
  251. routes = append(routes, &Route{
  252. Endpoint: githubAppWebhookEndpoint,
  253. Handler: githubAppWebhookHandler,
  254. Router: r,
  255. })
  256. return routes
  257. }