You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
3.8 KiB

11 months ago
  1. const { Telemetry } = require("../../models/telemetry");
  2. const { CollectorApi } = require("../../utils/collectorApi");
  3. const {
  4. flexUserRoleValid,
  5. ROLES,
  6. } = require("../../utils/middleware/multiUserProtected");
  7. const { validatedRequest } = require("../../utils/middleware/validatedRequest");
  8. const {
  9. isSupportedRepoProvider,
  10. } = require("../../utils/middleware/isSupportedRepoProviders");
  11. function extensionEndpoints(app) {
  12. if (!app) return;
  13. app.post(
  14. "/ext/:repo_platform/branches",
  15. [
  16. validatedRequest,
  17. flexUserRoleValid([ROLES.admin, ROLES.manager]),
  18. isSupportedRepoProvider,
  19. ],
  20. async (request, response) => {
  21. try {
  22. const { repo_platform } = request.params;
  23. const responseFromProcessor =
  24. await new CollectorApi().forwardExtensionRequest({
  25. endpoint: `/ext/${repo_platform}-repo/branches`,
  26. method: "POST",
  27. body: request.body,
  28. });
  29. response.status(200).json(responseFromProcessor);
  30. } catch (e) {
  31. console.error(e);
  32. response.sendStatus(500).end();
  33. }
  34. }
  35. );
  36. app.post(
  37. "/ext/:repo_platform/repo",
  38. [
  39. validatedRequest,
  40. flexUserRoleValid([ROLES.admin, ROLES.manager]),
  41. isSupportedRepoProvider,
  42. ],
  43. async (request, response) => {
  44. try {
  45. const { repo_platform } = request.params;
  46. const responseFromProcessor =
  47. await new CollectorApi().forwardExtensionRequest({
  48. endpoint: `/ext/${repo_platform}-repo`,
  49. method: "POST",
  50. body: request.body,
  51. });
  52. await Telemetry.sendTelemetry("extension_invoked", {
  53. type: `${repo_platform}_repo`,
  54. });
  55. response.status(200).json(responseFromProcessor);
  56. } catch (e) {
  57. console.error(e);
  58. response.sendStatus(500).end();
  59. }
  60. }
  61. );
  62. app.post(
  63. "/ext/youtube/transcript",
  64. [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])],
  65. async (request, response) => {
  66. try {
  67. const responseFromProcessor =
  68. await new CollectorApi().forwardExtensionRequest({
  69. endpoint: "/ext/youtube-transcript",
  70. method: "POST",
  71. body: request.body,
  72. });
  73. await Telemetry.sendTelemetry("extension_invoked", {
  74. type: "youtube_transcript",
  75. });
  76. response.status(200).json(responseFromProcessor);
  77. } catch (e) {
  78. console.error(e);
  79. response.sendStatus(500).end();
  80. }
  81. }
  82. );
  83. app.post(
  84. "/ext/confluence",
  85. [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])],
  86. async (request, response) => {
  87. try {
  88. const responseFromProcessor =
  89. await new CollectorApi().forwardExtensionRequest({
  90. endpoint: "/ext/confluence",
  91. method: "POST",
  92. body: request.body,
  93. });
  94. await Telemetry.sendTelemetry("extension_invoked", {
  95. type: "confluence",
  96. });
  97. response.status(200).json(responseFromProcessor);
  98. } catch (e) {
  99. console.error(e);
  100. response.sendStatus(500).end();
  101. }
  102. }
  103. );
  104. app.post(
  105. "/ext/website-depth",
  106. [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])],
  107. async (request, response) => {
  108. try {
  109. const responseFromProcessor =
  110. await new CollectorApi().forwardExtensionRequest({
  111. endpoint: "/ext/website-depth",
  112. method: "POST",
  113. body: request.body,
  114. });
  115. await Telemetry.sendTelemetry("extension_invoked", {
  116. type: "website_depth",
  117. });
  118. response.status(200).json(responseFromProcessor);
  119. } catch (e) {
  120. console.error(e);
  121. response.sendStatus(500).end();
  122. }
  123. }
  124. );
  125. }
  126. module.exports = { extensionEndpoints };