txtdot/src/app.ts
Artemy Egorov ead78e79ab
Fix connection refusion (#72)
* fix: socket connection refused

* chore: update versions
2024-01-06 18:46:55 +00:00

77 lines
1.9 KiB
TypeScript

import path from 'path';
import Fastify from 'fastify';
import fastifyStatic from '@fastify/static';
import fastifyView from '@fastify/view';
import fastifySwagger from '@fastify/swagger';
import fastifySwaggerUi from '@fastify/swagger-ui';
import ejs from 'ejs';
import indexRoute from './routes/browser/index';
import getRoute from './routes/browser/get';
import proxyRoute from './routes/browser/proxy';
import parseRoute from './routes/api/parse';
import rawHtml from './routes/api/raw-html';
import publicConfig from './publicConfig';
import errorHandler from './errors/handler';
import getConfig from './config/main';
import searchRoute from './routes/browser/search';
class App {
async init() {
const config = getConfig();
const fastify = Fastify({
logger: true,
trustProxy: config.reverse_proxy,
connectionTimeout: config.timeout,
});
fastify.setErrorHandler(errorHandler);
fastify.register(fastifyStatic, {
root: path.join(process.cwd(), 'static'),
prefix: '/static/',
});
fastify.register(fastifyView, {
engine: {
ejs: ejs,
},
});
if (config.swagger) {
await fastify.register(fastifySwagger, {
swagger: {
info: {
title: 'TXTDot API',
description: publicConfig.description,
version: publicConfig.version,
},
},
});
await fastify.register(fastifySwaggerUi, { routePrefix: '/doc' });
}
fastify.register(indexRoute);
fastify.register(getRoute);
if (config.search.enabled) {
fastify.register(searchRoute);
}
if (config.proxy_res) fastify.register(proxyRoute);
fastify.register(parseRoute);
fastify.register(rawHtml);
fastify.listen({ host: config.host, port: config.port }, (err) => {
err && console.log(err);
});
}
}
const app = new App();
app.init();