import { ParameterizedContext } from 'koa' import Router from '@koa/router' import compose from 'koa-compose' import { outputFile } from 'src/fs' import { Obj } from 'src/type' import { FilePathConeAccessToken, EVENT_CONE_AUTH_SUCCESS, EVENT_CONE_AUTH_FAIL, ee, } from 'src/util' import log from 'src/log' export function success(ctx: ParameterizedContext, result: Obj) { ctx.body = { success: true, result, } } export function createRouter() { const router = new Router() router.get('/', (ctx) => { success(ctx, { ping: true }) }) router.post('/saveConeAccessToken', async (ctx) => { const body = (ctx.request.body as Obj) || {} log.verbose('cone', 'saveConeAccessToken', body) const { accessToken } = body if (accessToken) { await outputFile(FilePathConeAccessToken, accessToken) ee.emit(EVENT_CONE_AUTH_SUCCESS) } else { ee.emit(EVENT_CONE_AUTH_FAIL) } success(ctx, { FilePathConeAccessToken, accessToken, }) }) return compose([router.routes(), router.allowedMethods()]) }