rdio-scanner/server/index.js
2019-11-18 13:06:09 -05:00

73 lines
1.8 KiB
JavaScript

'use strict';
require('dotenv').config();
const { ApolloServer, PubSub } = require('apollo-server-express');
const cors = require('cors');
const express = require('express');
const helmet = require('helmet');
const http = require('http');
const path = require('path');
const env = process.env.NODE_ENV || 'development';
const host = process.env.NODE_HOST || '0.0.0.0';
const port = parseInt(process.env.NODE_PORT, 10) || 3000;
const store = require('./models');
const pubsub = new PubSub();
const { dataSources, resolvers, typeDefs } = require('./graphql')({ pubsub, store });
const context = async ({ connection, req }) => {
if (connection) {
return connection.context;
} else {
return {
token: req.headers.authorization || '',
};
}
}
const app = express();
const httpServer = http.createServer(app);
const apolloServer = new ApolloServer({
context,
dataSources,
resolvers,
typeDefs,
});
const { pruningScheduler } = require('./helpers/rdio-scanner');
const clientRoot = path.join(__dirname, '../client/dist');
pruningScheduler({ store });
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(express.static(clientRoot));
app.post('/api/trunk-recorder-call-upload', require('./routes/trunk-recorder-call-upload')({ pubsub, store }));
app.post('/api/trunk-recorder-system-upload', require('./routes/trunk-recorder-system-upload')({ pubsub, store }));
app.set('port', port);
if (env !== 'development') {
app.disable('x-powered-by');
app.get(/\/|\/index.html/, cors(), require('./routes/main')({ clientRoot }));
app.use(helmet());
}
apolloServer.applyMiddleware({ app, cors: true });
apolloServer.installSubscriptionHandlers(httpServer);
httpServer.listen(port, host, () => console.log(`Rdio Scanner is running at http://${host}:${port}/`));
module.exports = app;