Initial Commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
node_modules
|
||||||
6
index.js
Normal file
6
index.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
require('regenerator-runtime/runtime');
|
||||||
|
require('babel-register')({
|
||||||
|
presets: [ 'env' ]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = require('./src/app');
|
||||||
1400
package-lock.json
generated
Normal file
1400
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
21
package.json
Normal file
21
package.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "server",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"dependencies": {
|
||||||
|
"body-parser": "^1.18.3",
|
||||||
|
"colors": "^1.3.1",
|
||||||
|
"express": "^4.16.3",
|
||||||
|
"regenerator-runtime": "^0.12.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"babel-preset-env": "^1.7.0",
|
||||||
|
"babel-register": "^6.26.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "Ben (plane000)",
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
1
scripts/initdb.sh
Normal file
1
scripts/initdb.sh
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# Install and create database script here, bash
|
||||||
14
src/app.js
Normal file
14
src/app.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import {Logger} from './models/logger';
|
||||||
|
import {Config} from './config/config'
|
||||||
|
import {Server} from './server';
|
||||||
|
import {Router} from './controllers/routes/router';
|
||||||
|
|
||||||
|
|
||||||
|
init();
|
||||||
|
async function init() {
|
||||||
|
await Config.load();
|
||||||
|
await Server.start();
|
||||||
|
await Router.initEndpoints();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
20
src/config/config.js
Normal file
20
src/config/config.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
import {Logger} from '../models/logger';
|
||||||
|
|
||||||
|
let server;
|
||||||
|
|
||||||
|
export class Config {
|
||||||
|
static get Server() {return server}
|
||||||
|
|
||||||
|
static async load() {
|
||||||
|
try {
|
||||||
|
let temp = fs.readFileSync('src/config/configs/server.json')
|
||||||
|
server = JSON.parse(temp);
|
||||||
|
} catch (e) {
|
||||||
|
Logger.panic('ERROR LOADING: src/config/configs/server.json');
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.info('Config loaded');
|
||||||
|
}
|
||||||
|
}
|
||||||
4
src/config/configs/server.json
Normal file
4
src/config/configs/server.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"HTTPPort": 8080,
|
||||||
|
"SocketPort": 8081
|
||||||
|
}
|
||||||
23
src/controllers/routes/router.js
Normal file
23
src/controllers/routes/router.js
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import {Logger} from '../../models/logger';
|
||||||
|
import {Server} from '../../server';
|
||||||
|
|
||||||
|
let app;
|
||||||
|
|
||||||
|
export class Router {
|
||||||
|
|
||||||
|
static async initEndpoints() {
|
||||||
|
Logger.info('Setting up API HTTP endpoints');
|
||||||
|
|
||||||
|
app = Server.App;
|
||||||
|
|
||||||
|
app.get('/', (req, res) => {
|
||||||
|
res.end('DEV SERVER');
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/user/:id', (req, res) => {});
|
||||||
|
app.delete('/user/:id', (req, res) => {});
|
||||||
|
app.post('/user', (req, res) => {});
|
||||||
|
|
||||||
|
Logger.info('HTTP endpoints settup');
|
||||||
|
}
|
||||||
|
}
|
||||||
33
src/models/logger.js
Normal file
33
src/models/logger.js
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
const colours = require('colors/safe');
|
||||||
|
|
||||||
|
export class Logger {
|
||||||
|
static info(message) {
|
||||||
|
if (!message) throw 'No message defined';
|
||||||
|
let d = new Date();
|
||||||
|
console.log('[' + d.toLocaleString() + '] ['
|
||||||
|
+ colours.green('INFO') + '] ' + message);
|
||||||
|
}
|
||||||
|
|
||||||
|
static warn(message) {
|
||||||
|
if (!message) throw 'No message defined';
|
||||||
|
let d = new Date();
|
||||||
|
console.log('[' + d.toLocaleString() + '] ['
|
||||||
|
+ colours.yellow('WARN') + '] ' + message);
|
||||||
|
}
|
||||||
|
|
||||||
|
static error(message) {
|
||||||
|
if (!message) throw 'No message defined';
|
||||||
|
let d = new Date();
|
||||||
|
console.log('[' + d.toLocaleString() + '] ['
|
||||||
|
+ colours.red('ERROR') + '] ' + message);
|
||||||
|
}
|
||||||
|
|
||||||
|
static panic(message) {
|
||||||
|
if (!message) throw 'No message defined';
|
||||||
|
let d = new Date();
|
||||||
|
console.log('[' + d.toLocaleString() + '] ['
|
||||||
|
+ colours.red('PANIC') + '] ' + message);
|
||||||
|
process.exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
30
src/server.js
Normal file
30
src/server.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import express from 'express'
|
||||||
|
import bodyParser from 'body-parser';
|
||||||
|
|
||||||
|
import {Logger} from './models/logger';
|
||||||
|
import {Config} from './config/config';
|
||||||
|
|
||||||
|
let app;
|
||||||
|
let server;
|
||||||
|
let router
|
||||||
|
|
||||||
|
export class Server {
|
||||||
|
static get App() {return app}
|
||||||
|
static get Server() {return server}
|
||||||
|
|
||||||
|
static async start() {
|
||||||
|
app = express();
|
||||||
|
server = require('http').createServer(app);
|
||||||
|
Logger.info('Server created');
|
||||||
|
|
||||||
|
let port = Config.Server.HTTPPort;
|
||||||
|
app.use(bodyParser.json());
|
||||||
|
app.use(bodyParser.urlencoded({ extended: true }));
|
||||||
|
try {
|
||||||
|
app.listen(port);
|
||||||
|
} catch (e) {
|
||||||
|
Logger.panic(`Could not open a connection on port ${port}, maybe the port is populated or permissions are not met`);
|
||||||
|
}
|
||||||
|
Logger.info(`HTTP service is listening at port ${port}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user