forked from DebaucheryLibrarian/traxxx
Added release type distinction to REST API.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const { fetchActor } = require('../actors');
|
||||
const { fetchActor, searchActors } = require('../actors');
|
||||
|
||||
async function fetchActorApi(req, res) {
|
||||
const actor = await fetchActor(req.params.actorId);
|
||||
@@ -13,6 +13,20 @@ async function fetchActorApi(req, res) {
|
||||
res.status(404).send({ actor: null });
|
||||
}
|
||||
|
||||
async function fetchActorsApi(req, res) {
|
||||
const query = req.query.query || req.query.q;
|
||||
|
||||
if (query) {
|
||||
const actors = await searchActors(query, req.query.limit);
|
||||
|
||||
res.send({ actors });
|
||||
return;
|
||||
}
|
||||
|
||||
res.send({ hint: 'specify a query or ID', actors: [] });
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
fetchActor: fetchActorApi,
|
||||
fetchActors: fetchActorsApi,
|
||||
};
|
||||
|
||||
@@ -2,28 +2,48 @@
|
||||
|
||||
const { fetchRelease, fetchReleases, searchReleases } = require('../releases');
|
||||
|
||||
async function fetchReleaseApi(req, res) {
|
||||
const release = await fetchRelease(req.params.releaseId);
|
||||
async function fetchReleaseApi(req, res, type = 'scene') {
|
||||
const release = await fetchRelease(req.params.releaseId, type);
|
||||
|
||||
if (release) {
|
||||
res.send({ release });
|
||||
res.send({ [type]: release });
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(404).send({ release: null });
|
||||
res.status(404).send({ [type]: null });
|
||||
}
|
||||
|
||||
async function fetchReleasesApi(req, res) {
|
||||
async function fetchReleasesApi(req, res, type = 'scene') {
|
||||
const query = req.query.query || req.query.q;
|
||||
|
||||
const releases = query
|
||||
? await searchReleases(query, req.query.limit)
|
||||
: await fetchReleases(req.query.limit);
|
||||
? await searchReleases(query, req.query.limit, type)
|
||||
: await fetchReleases(req.query.limit, type);
|
||||
|
||||
res.send({ releases });
|
||||
res.send({ [`${type}s`]: releases });
|
||||
}
|
||||
|
||||
async function fetchSceneApi(req, res) {
|
||||
return fetchReleaseApi(req, res, 'scene');
|
||||
}
|
||||
|
||||
async function fetchScenesApi(req, res) {
|
||||
return fetchReleasesApi(req, res, 'scene');
|
||||
}
|
||||
|
||||
async function fetchMovieApi(req, res) {
|
||||
return fetchReleaseApi(req, res, 'movie');
|
||||
}
|
||||
|
||||
async function fetchMoviesApi(req, res) {
|
||||
return fetchReleasesApi(req, res, 'movie');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
fetchRelease: fetchReleaseApi,
|
||||
fetchReleases: fetchReleasesApi,
|
||||
fetchScene: fetchSceneApi,
|
||||
fetchMovie: fetchMovieApi,
|
||||
fetchScenes: fetchScenesApi,
|
||||
fetchMovies: fetchMoviesApi,
|
||||
};
|
||||
|
||||
@@ -15,11 +15,16 @@ const logger = require('../logger')(__filename);
|
||||
const { ActorPlugins, SitePlugins, ReleasePlugins } = require('./plugins/plugins');
|
||||
|
||||
const {
|
||||
fetchRelease,
|
||||
fetchReleases,
|
||||
fetchScene,
|
||||
fetchScenes,
|
||||
fetchMovie,
|
||||
fetchMovies,
|
||||
} = require('./releases');
|
||||
|
||||
const { fetchActor } = require('./actors');
|
||||
const {
|
||||
fetchActor,
|
||||
fetchActors,
|
||||
} = require('./actors');
|
||||
|
||||
function initServer() {
|
||||
const app = express();
|
||||
@@ -63,9 +68,13 @@ function initServer() {
|
||||
|
||||
router.use(bodyParser.json({ strict: false }));
|
||||
|
||||
router.get('/api/releases', fetchReleases);
|
||||
router.get('/api/releases/:releaseId', fetchRelease);
|
||||
router.get('/api/scenes', fetchScenes);
|
||||
router.get('/api/scenes/:releaseId', fetchScene);
|
||||
|
||||
router.get('/api/movies', fetchMovies);
|
||||
router.get('/api/movies/:releaseId', fetchMovie);
|
||||
|
||||
router.get('/api/actors', fetchActors);
|
||||
router.get('/api/actors/:actorId', fetchActor);
|
||||
|
||||
router.get('*', (req, res) => {
|
||||
|
||||
Reference in New Issue
Block a user