/* eslint-disable no-case-declarations */ import { Express } from 'express' import moment from 'moment' import { handleZoomWebhook } from '../queues' import * as ZoomUtils from '../utils/zoom' import { logger } from '../utils/logger' import config from '../config' import { prismaClient as prisma } from '../prismaClient' export default (server: Express) => { server.post('/api/zoom/events', async (req, res) => { const { body } = req try { await handleZoomWebhook(body) } catch (error) { logger.error(error) } return res.status(200).end() }) server.get('/api/zoom/auth', async (req, res) => { try { // State will be the managing company id const { code, state } = req.query if (!state) { throw new Error(`Invalid state`) } const managingCompanyId = state as string const { access_token: accessToken, refresh_token: refreshToken, } = await ZoomUtils.getAccessToken({ code: code as string, redirectUrl: `${config.hostNameHttps}/api/zoom/auth`, }) // console.log('accessToken good', accessToken) // console.log('refreshToken good', refreshToken) await prisma.managingCompany.update({ where: { id: managingCompanyId, }, data: { zoomAccessToken: accessToken, zoomRefreshToken: refreshToken, zoomAccessTokenExpiresIn: moment().add(1, 'hours').format(), }, }) return res .status(200) .redirect(`${config.managerWebHostName}/all/settings/assembly?connected=success`) } catch (error) { logger.error(error) return res.status(500).send("Something went wrong. We're on it") } }) server.post('/api/zoom/uninstall', (req, res) => { // Need to handle this return res.status(200).end() }) }