'use strict'; const path = require('path'); const config = require('config'); const express = require('express'); const Router = require('express-promise-router'); const bodyParser = require('body-parser'); const { fetchReleases, fetchActorReleases, fetchNetworkReleases, fetchSiteReleases, } = require('./releases'); const { fetchNetworks, fetchNetworksFromReleases, } = require('./networks'); const { fetchActors } = require('./actors'); const { fetchSites } = require('./sites'); function initServer() { const app = express(); const router = Router(); router.use('/media', express.static(config.photoPath)); router.use(express.static('public')); router.use('/img', (req, res) => { res.status(404).send(); }); router.use(bodyParser.json({ strict: false })); router.get('/api/releases', fetchReleases); router.get('/api/releases/:releaseId', fetchReleases); router.get('/api/releases/networks', fetchNetworksFromReleases); router.get('/api/actors', fetchActors); router.get('/api/actors/:actorId', fetchActors); router.get('/api/actors/:actorId/releases', fetchActorReleases); router.get('/api/networks', fetchNetworks); router.get('/api/networks/:networkId', fetchNetworks); router.get('/api/networks/:networkId/releases', fetchNetworkReleases); router.get('/api/sites', fetchSites); router.get('/api/sites/:siteId', fetchSites); router.get('/api/sites/:siteId/releases', fetchSiteReleases); router.get('*', (req, res) => { res.sendFile(path.join(__dirname, '../../public/index.html')); }); app.use(router); app.listen(config.web.port, () => { console.log(`Web server listening on port ${config.web.port}`); }); } module.exports = initServer;