tldraw/apps/huppy/pages/api/dev/simulate.ts

38 lines
1.2 KiB
TypeScript
Raw Normal View History

import { assert, assertExists } from '@tldraw/utils'
import { NextApiRequest, NextApiResponse } from 'next'
import { Ctx } from '../../../src/ctx'
import { NamedEvent, onGithubEvent } from '../../../src/flow'
import { getAppOctokit, getInstallationToken } from '../../../src/octokit'
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
assert(process.env.NODE_ENV !== 'production')
assert(req.method === 'POST')
const deliveryId = req.body.id as number
assert(typeof deliveryId === 'number')
const app = getAppOctokit()
const { data: delivery } = await app.octokit.rest.apps.getWebhookDelivery({
delivery_id: deliveryId,
})
const installationId = assertExists(delivery.installation_id)
const ctx: Ctx = {
app,
installationId,
octokit: await app.getInstallationOctokit(installationId),
installationToken: await getInstallationToken(app, installationId),
}
try {
const messages = await onGithubEvent(ctx, {
name: delivery.event,
payload: delivery.request.payload,
} as NamedEvent)
return res.json({ message: JSON.stringify(messages, null, '\t') })
} catch (err: any) {
console.log(err.stack)
return res.json({ message: err.message })
}
}