Readlebee/server/routes/search.js

38 lines
1.7 KiB
JavaScript
Raw Normal View History

2019-09-07 01:20:27 +02:00
const SearchController = require('../controllers/search');
async function routes(fastify, options) {
fastify.get('/api/search', async (request, reply) => {
2019-09-07 01:20:27 +02:00
const searchTerm = typeof request.query.for !== 'undefined' ? request.query.for.trim() : '';
2019-09-26 20:22:58 +02:00
const searchBy = typeof request.query.by !== 'undefined' ? request.query.by.trim() : 'title';
const language = typeof request.query.lang !== 'undefined' ? request.query.lang.trim().split('-')[0] : undefined; // Get base language in cases like 'en-US'
2019-09-26 20:22:58 +02:00
const searchSource = typeof request.query.source !== 'undefined' ? request.query.source.trim() : undefined; // Get base language in cases like 'en-US'
const search = new SearchController(searchTerm, language);
2019-09-07 01:20:27 +02:00
2019-09-26 20:22:58 +02:00
switch (searchSource) {
case 'openLibrary': {
return await search.searchOpenLibrary(searchBy);
}
case 'bookBrainz': {
return await search.searchOpenLibrary(searchBy);
}
case 'inventaire':
default: {
if (searchBy === 'title') {
return await search.quickSearchInventaire();
} else {
return await search.searchInventaire(searchBy);
}
}
}
2019-09-07 01:20:27 +02:00
});
2019-09-11 18:31:50 +02:00
fastify.get('/api/search/cover', async (request, reply) => {
const inventaireURI = typeof request.query.uri !== 'undefined' ? request.query.uri.trim() : false;
const language = typeof request.query.lang !== 'undefined' ? request.query.lang.trim().split('-')[0] : undefined; // Get base language in cases like 'en-US'
const search = new SearchController(fastify.siteConfig.inventaireDomain, null, language);
2019-09-11 18:31:50 +02:00
return await search.getInventaireCovers(inventaireURI);
});
2019-09-07 01:20:27 +02:00
}
module.exports = routes