fix(proxy): initialize image proxies after the proxy is set up (#1794)

The ImageProxy for TMDB and TheTVDB were initialized before the proxy settings were set up, so they
were ignoring the proxy settings.

fix #1787
This commit is contained in:
Gauthier
2025-07-24 10:33:53 +02:00
committed by GitHub
parent 75a7279ea2
commit e98f31e66c

View File

@@ -4,27 +4,40 @@ import { Router } from 'express';
const router = Router(); const router = Router();
const tmdbImageProxy = new ImageProxy('tmdb', 'https://image.tmdb.org', { // Delay the initialization of ImageProxy instances until the proxy (if any) is properly configured
rateLimitOptions: { let _tmdbImageProxy: ImageProxy;
maxRequests: 20, function initTmdbImageProxy() {
maxRPS: 50, if (!_tmdbImageProxy) {
}, _tmdbImageProxy = new ImageProxy('tmdb', 'https://image.tmdb.org', {
}); rateLimitOptions: {
const tvdbImageProxy = new ImageProxy('tvdb', 'https://artworks.thetvdb.com', { maxRequests: 20,
rateLimitOptions: { maxRPS: 50,
maxRequests: 20, },
maxRPS: 50, });
}, }
}); return _tmdbImageProxy;
}
let _tvdbImageProxy: ImageProxy;
function initTvdbImageProxy() {
if (!_tvdbImageProxy) {
_tvdbImageProxy = new ImageProxy('tvdb', 'https://artworks.thetvdb.com', {
rateLimitOptions: {
maxRequests: 20,
maxRPS: 50,
},
});
}
return _tvdbImageProxy;
}
router.get('/:type/*', async (req, res) => { router.get('/:type/*', async (req, res) => {
const imagePath = req.path.replace(/^\/\w+/, ''); const imagePath = req.path.replace(/^\/\w+/, '');
try { try {
let imageData; let imageData;
if (req.params.type === 'tmdb') { if (req.params.type === 'tmdb') {
imageData = await tmdbImageProxy.getImage(imagePath); imageData = await initTmdbImageProxy().getImage(imagePath);
} else if (req.params.type === 'tvdb') { } else if (req.params.type === 'tvdb') {
imageData = await tvdbImageProxy.getImage(imagePath); imageData = await initTvdbImageProxy().getImage(imagePath);
} else { } else {
logger.error('Unsupported image type', { logger.error('Unsupported image type', {
imagePath, imagePath,