59 lines
2.1 KiB
TypeScript
59 lines
2.1 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import { handleHandshake } from '../handlers/handshake.handler.js';
|
|
import { handleDoAuth } from '../handlers/do-auth.handler.js';
|
|
import { handleGetCategories } from '../handlers/get-categories.handler.js';
|
|
import { handleGetOrderedList } from '../handlers/get-ordered-list.handler.js';
|
|
import { handleGetSeasons } from '../handlers/get-seasons.handler.js';
|
|
import { handleCreateLink } from '../handlers/create-link.handler.js';
|
|
import { handleFavorites } from '../handlers/favorites.handler.js';
|
|
import { handleGetEpgInfo } from '../handlers/get-epg-info.handler.js';
|
|
import { handleGetShortEpg } from '../handlers/get-short-epg.handler.js';
|
|
import { handleGetGenres } from '../handlers/get-genres.handler.js';
|
|
|
|
/**
|
|
* Shared Stalker action dispatcher.
|
|
* Used by both the direct /portal.php route and the /stalker CORS proxy route.
|
|
*/
|
|
export default function dispatchPortalAction(req: Request, res: Response): void {
|
|
const action = req.query['action'] as string;
|
|
|
|
switch (action) {
|
|
case 'handshake':
|
|
handleHandshake(req, res);
|
|
break;
|
|
case 'do_auth':
|
|
handleDoAuth(req, res);
|
|
break;
|
|
case 'get_categories':
|
|
case 'get_genres_vod':
|
|
case 'get_genres_itv':
|
|
handleGetCategories(req, res);
|
|
break;
|
|
case 'get_genres':
|
|
handleGetGenres(req, res);
|
|
break;
|
|
case 'get_ordered_list':
|
|
if (req.query['movie_id']) {
|
|
handleGetSeasons(req, res);
|
|
} else {
|
|
handleGetOrderedList(req, res);
|
|
}
|
|
break;
|
|
case 'create_link':
|
|
handleCreateLink(req, res);
|
|
break;
|
|
case 'favorites':
|
|
handleFavorites(req, res);
|
|
break;
|
|
case 'get_short_epg':
|
|
handleGetShortEpg(req, res);
|
|
break;
|
|
case 'get_epg_info':
|
|
handleGetEpgInfo(req, res);
|
|
break;
|
|
default:
|
|
console.warn(`[portal] Unknown action: ${action}`);
|
|
res.json({ js: { error: `Unknown action: ${action}` } });
|
|
}
|
|
}
|