|
|
|
import { Router } from 'express';
|
|
|
|
import user from './user';
|
|
|
|
import authRoutes from './auth';
|
|
|
|
import { checkUser, isAuthenticated } from '../middleware/auth';
|
|
|
|
import settingsRoutes from './settings';
|
|
|
|
import { Permission } from '../lib/permissions';
|
|
|
|
import { getSettings } from '../lib/settings';
|
|
|
|
import searchRoutes from './search';
|
|
|
|
import discoverRoutes from './discover';
|
|
|
|
import requestRoutes from './request';
|
|
|
|
import movieRoutes from './movie';
|
|
|
|
import tvRoutes from './tv';
|
|
|
|
import mediaRoutes from './media';
|
|
|
|
import personRoutes from './person';
|
|
|
|
import collectionRoutes from './collection';
|
|
|
|
import { getAppVersion, getCommitTag } from '../utils/appVersion';
|
|
|
|
import serviceRoutes from './service';
|
|
|
|
import { appDataStatus, appDataPath } from '../utils/appDataVolume';
|
|
|
|
import TheMovieDb from '../api/themoviedb';
|
|
|
|
import { mapProductionCompany } from '../models/Movie';
|
|
|
|
import { mapNetwork } from '../models/Tv';
|
|
|
|
|
|
|
|
const router = Router();
|
|
|
|
|
|
|
|
router.use(checkUser);
|
|
|
|
|
|
|
|
router.get('/status', (req, res) => {
|
|
|
|
return res.status(200).json({
|
|
|
|
version: getAppVersion(),
|
|
|
|
commitTag: getCommitTag(),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
router.get('/status/appdata', (_req, res) => {
|
|
|
|
return res.status(200).json({
|
|
|
|
appData: appDataStatus(),
|
|
|
|
appDataPath: appDataPath(),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
router.use('/user', isAuthenticated(), user);
|
|
|
|
router.get('/settings/public', (_req, res) => {
|
|
|
|
const settings = getSettings();
|
|
|
|
|
|
|
|
return res.status(200).json(settings.fullPublicSettings);
|
|
|
|
});
|
|
|
|
router.use(
|
|
|
|
'/settings',
|
|
|
|
isAuthenticated(Permission.MANAGE_SETTINGS),
|
|
|
|
settingsRoutes
|
|
|
|
);
|
|
|
|
router.use('/search', isAuthenticated(), searchRoutes);
|
|
|
|
router.use('/discover', isAuthenticated(), discoverRoutes);
|
|
|
|
router.use('/request', isAuthenticated(), requestRoutes);
|
|
|
|
router.use('/movie', isAuthenticated(), movieRoutes);
|
|
|
|
router.use('/tv', isAuthenticated(), tvRoutes);
|
|
|
|
router.use('/media', isAuthenticated(), mediaRoutes);
|
|
|
|
router.use('/person', isAuthenticated(), personRoutes);
|
|
|
|
router.use('/collection', isAuthenticated(), collectionRoutes);
|
|
|
|
router.use('/service', isAuthenticated(), serviceRoutes);
|
|
|
|
router.use('/auth', authRoutes);
|
|
|
|
|
|
|
|
router.get('/regions', isAuthenticated(), async (req, res) => {
|
|
|
|
const tmdb = new TheMovieDb();
|
|
|
|
|
|
|
|
const regions = await tmdb.getRegions();
|
|
|
|
|
|
|
|
return res.status(200).json(regions);
|
|
|
|
});
|
|
|
|
|
|
|
|
router.get('/languages', isAuthenticated(), async (req, res) => {
|
|
|
|
const tmdb = new TheMovieDb();
|
|
|
|
|
|
|
|
const languages = await tmdb.getLanguages();
|
|
|
|
|
|
|
|
return res.status(200).json(languages);
|
|
|
|
});
|
|
|
|
|
|
|
|
router.get<{ id: string }>('/studio/:id', async (req, res) => {
|
|
|
|
const tmdb = new TheMovieDb();
|
|
|
|
|
|
|
|
const studio = await tmdb.getStudio(Number(req.params.id));
|
|
|
|
|
|
|
|
return res.status(200).json(mapProductionCompany(studio));
|
|
|
|
});
|
|
|
|
|
|
|
|
router.get<{ id: string }>('/network/:id', async (req, res) => {
|
|
|
|
const tmdb = new TheMovieDb();
|
|
|
|
|
|
|
|
const network = await tmdb.getNetwork(Number(req.params.id));
|
|
|
|
|
|
|
|
return res.status(200).json(mapNetwork(network));
|
|
|
|
});
|
|
|
|
|
|
|
|
router.get('/genres/movie', isAuthenticated(), async (req, res) => {
|
|
|
|
const tmdb = new TheMovieDb();
|
|
|
|
|
|
|
|
const genres = await tmdb.getMovieGenres();
|
|
|
|
|
|
|
|
return res.status(200).json(genres);
|
|
|
|
});
|
|
|
|
|
|
|
|
router.get('/genres/tv', isAuthenticated(), async (req, res) => {
|
|
|
|
const tmdb = new TheMovieDb();
|
|
|
|
|
|
|
|
const genres = await tmdb.getTvGenres();
|
|
|
|
|
|
|
|
return res.status(200).json(genres);
|
|
|
|
});
|
|
|
|
|
|
|
|
router.get('/', (_req, res) => {
|
|
|
|
return res.status(200).json({
|
|
|
|
api: 'Overseerr API',
|
|
|
|
version: '1.0',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
export default router;
|