Files
torrentio/addon/serverless.js

44 lines
1.4 KiB
JavaScript

const rateLimit = require('express-rate-limit');
const { getRouter } = require('stremio-addon-sdk');
const addonInterface = require('./addon');
const { manifest } = require('./lib/manifest');
const parseConfiguration = require('./lib/configuration');
const landingTemplate = require('./lib/landingTemplate');
const router = getRouter(addonInterface);
const limiter = rateLimit({
windowMs: 10 * 1000, // 10 seconds
max: 10, // limit each IP to 10 requests per windowMs
headers: false
});
router.use(limiter);
router.get('/', (_, res) => {
const landingHTML = landingTemplate(manifest());
res.setHeader('content-type', 'text/html');
res.end(landingHTML);
});
router.get('/:configuration', (req, res) => {
const configValues = parseConfiguration(req.params.configuration);
console.log(configValues);
const landingHTML = landingTemplate(manifest(), configValues.providers, configValues.realdebrid);
res.setHeader('content-type', 'text/html');
res.end(landingHTML);
});
router.get('/:configuration/manifest.json', (req, res) => {
const configValues = parseConfiguration(req.params.configuration);
const manifestBuf = JSON.stringify(manifest(configValues.providers, configValues.realdebrid));
res.setHeader('Content-Type', 'application/json; charset=utf-8');
res.end(manifestBuf)
});
module.exports = function (req, res) {
router(req, res, function () {
res.statusCode = 404;
res.end();
});
};