cal.pub0.org/apps/web/pages/api/download-cal-video-recordin...

47 lines
1.2 KiB
TypeScript
Raw Normal View History

Cal Video (Daily) Recording (#6039) * feat: wip Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * feat: add download recording button Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * moved video recording into /ee/, wrapped in LicenseRequired * fix: security issues in downloading recording updates designs Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * feat: add upgradation banner Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * chore: remove default room Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * chore: fix type error Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: add type in get recording Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: add suggestions and zod type for recording Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: add types in getRecordings Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: type error Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: type error Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: finally all type errors fixed Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * Server side validation for users in team plans for recordings * fix: remove any type Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: type error Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> Co-authored-by: Peer Richelsen <peeroke@gmail.com> Co-authored-by: Peer Richelsen <peer@cal.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> Co-authored-by: Alan <alannnc@gmail.com>
2022-12-27 21:03:39 +00:00
import type { NextApiRequest, NextApiResponse } from "next";
import { z } from "zod";
import { fetcher } from "@calcom/app-store/dailyvideo/lib/VideoApiAdapter";
import { getSession } from "@calcom/lib/auth";
import { defaultHandler, defaultResponder } from "@calcom/lib/server";
const getAccessLinkSchema = z.union([
z.object({
download_link: z.string(),
expires: z.number(),
}),
z.object({}),
]);
const requestQuery = z.object({
recordingId: z.string(),
});
async function handler(
req: NextApiRequest,
res: NextApiResponse<z.infer<typeof getAccessLinkSchema> | void>
) {
const { recordingId } = requestQuery.parse(req.query);
const session = await getSession({ req });
// Check if user belong to active team
if (!session?.user?.belongsToActiveTeam) {
return res.status(403);
}
try {
const response = await fetcher(`/recordings/${recordingId}/access-link`).then(getAccessLinkSchema.parse);
if ("download_link" in response && response.download_link) {
return res.status(200).json(response);
}
return res.status(400);
} catch (err) {
res.status(500);
}
}
export default defaultHandler({
GET: Promise.resolve({ default: defaultResponder(handler) }),
});