49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
|
import fetch from 'node-fetch';
|
|
|
|
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
|
server.get('/data/', async (_request, reply) => {
|
|
try {
|
|
const databaseUrl =
|
|
'https://raw.githubusercontent.com/wanhose/cookie-dialog-monster/main/database.json';
|
|
const fetchOptions = {
|
|
headers: { 'Cache-Control': 'no-cache' },
|
|
};
|
|
const { rules, ...result } = await (await fetch(databaseUrl, fetchOptions)).json();
|
|
|
|
reply.send({
|
|
data: {
|
|
...result,
|
|
rules: (rules as readonly string[]).map((urlFilter, index) => ({
|
|
id: index + 1,
|
|
priority: 1,
|
|
action: {
|
|
type: 'block',
|
|
},
|
|
condition: {
|
|
resourceTypes: [
|
|
'font',
|
|
'image',
|
|
'media',
|
|
'object',
|
|
'script',
|
|
'stylesheet',
|
|
'xmlhttprequest',
|
|
],
|
|
urlFilter,
|
|
},
|
|
})),
|
|
},
|
|
success: true,
|
|
});
|
|
} catch (error) {
|
|
reply.send({
|
|
errors: [error.message],
|
|
success: false,
|
|
});
|
|
}
|
|
});
|
|
|
|
done();
|
|
};
|