import megalodon, { MegalodonInterface } from '@cutls/megalodon'; import Router from "@koa/router"; import { koaBody } from 'koa-body'; import { getClient } from '../ApiMastodonCompatibleService.js'; export function apiFilterMastodon(router: Router): void { router.get('/v1/filters', async (ctx) => { const BASE_URL = `${ctx.request.protocol}://${ctx.request.hostname}`; const accessTokens = ctx.request.headers.authorization; const client = getClient(BASE_URL, accessTokens); const body: any = ctx.request.body; try { const data = await client.getFilters(); ctx.body = data.data; } catch (e: any) { console.error(e) ctx.status = 401; ctx.body = e.response.data; } }); router.get('/v1/filters/:id', async (ctx) => { const BASE_URL = `${ctx.request.protocol}://${ctx.request.hostname}`; const accessTokens = ctx.request.headers.authorization; const client = getClient(BASE_URL, accessTokens); const body: any = ctx.request.body; try { const data = await client.getFilter(ctx.params.id); ctx.body = data.data; } catch (e: any) { console.error(e) ctx.status = 401; ctx.body = e.response.data; } }); router.post('/v1/filters', async (ctx) => { const BASE_URL = `${ctx.request.protocol}://${ctx.request.hostname}`; const accessTokens = ctx.request.headers.authorization; const client = getClient(BASE_URL, accessTokens); const body: any = ctx.request.body; try { const data = await client.createFilter(body.phrase, body.context, body); ctx.body = data.data; } catch (e: any) { console.error(e) ctx.status = 401; ctx.body = e.response.data; } }); router.post('/v1/filters/:id', async (ctx) => { const BASE_URL = `${ctx.request.protocol}://${ctx.request.hostname}`; const accessTokens = ctx.request.headers.authorization; const client = getClient(BASE_URL, accessTokens); const body: any = ctx.request.body; try { const data = await client.updateFilter(ctx.params.id, body.phrase, body.context); ctx.body = data.data; } catch (e: any) { console.error(e) ctx.status = 401; ctx.body = e.response.data; } }); router.delete('/v1/filters/:id', async (ctx) => { const BASE_URL = `${ctx.request.protocol}://${ctx.request.hostname}`; const accessTokens = ctx.request.headers.authorization; const client = getClient(BASE_URL, accessTokens); const body: any = ctx.request.body; try { const data = await client.deleteFilter(ctx.params.id); ctx.body = data.data; } catch (e: any) { console.error(e) ctx.status = 401; ctx.body = e.response.data; } }); }