const { Telemetry } = require("../../models/telemetry"); const { CollectorApi } = require("../../utils/collectorApi"); const { flexUserRoleValid, ROLES, } = require("../../utils/middleware/multiUserProtected"); const { validatedRequest } = require("../../utils/middleware/validatedRequest"); const { isSupportedRepoProvider, } = require("../../utils/middleware/isSupportedRepoProviders"); function extensionEndpoints(app) { if (!app) return; app.post( "/ext/:repo_platform/branches", [ validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager]), isSupportedRepoProvider, ], async (request, response) => { try { const { repo_platform } = request.params; const responseFromProcessor = await new CollectorApi().forwardExtensionRequest({ endpoint: `/ext/${repo_platform}-repo/branches`, method: "POST", body: request.body, }); response.status(200).json(responseFromProcessor); } catch (e) { console.error(e); response.sendStatus(500).end(); } } ); app.post( "/ext/:repo_platform/repo", [ validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager]), isSupportedRepoProvider, ], async (request, response) => { try { const { repo_platform } = request.params; const responseFromProcessor = await new CollectorApi().forwardExtensionRequest({ endpoint: `/ext/${repo_platform}-repo`, method: "POST", body: request.body, }); await Telemetry.sendTelemetry("extension_invoked", { type: `${repo_platform}_repo`, }); response.status(200).json(responseFromProcessor); } catch (e) { console.error(e); response.sendStatus(500).end(); } } ); app.post( "/ext/youtube/transcript", [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])], async (request, response) => { try { const responseFromProcessor = await new CollectorApi().forwardExtensionRequest({ endpoint: "/ext/youtube-transcript", method: "POST", body: request.body, }); await Telemetry.sendTelemetry("extension_invoked", { type: "youtube_transcript", }); response.status(200).json(responseFromProcessor); } catch (e) { console.error(e); response.sendStatus(500).end(); } } ); app.post( "/ext/confluence", [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])], async (request, response) => { try { const responseFromProcessor = await new CollectorApi().forwardExtensionRequest({ endpoint: "/ext/confluence", method: "POST", body: request.body, }); await Telemetry.sendTelemetry("extension_invoked", { type: "confluence", }); response.status(200).json(responseFromProcessor); } catch (e) { console.error(e); response.sendStatus(500).end(); } } ); app.post( "/ext/website-depth", [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])], async (request, response) => { try { const responseFromProcessor = await new CollectorApi().forwardExtensionRequest({ endpoint: "/ext/website-depth", method: "POST", body: request.body, }); await Telemetry.sendTelemetry("extension_invoked", { type: "website_depth", }); response.status(200).json(responseFromProcessor); } catch (e) { console.error(e); response.sendStatus(500).end(); } } ); } module.exports = { extensionEndpoints };