Commit e762cb49 authored by Juorder Gonzalez's avatar Juorder Gonzalez

Merge pull request #28 from ZBoxApp/server

Add test server for companies data
parents 0f873385 5c64af25
......@@ -58,6 +58,12 @@ stop-server:
kill $$PROCID; \
done
@for PROCID in $$(ps -ef | grep "[b]abel-node.*companies" | awk '{ print $$2 }'); do \
echo stopping server $$PROCID; \
kill $$PROCID; \
done
start-server:
@echo Starting ZBox Manager 2.0 Test Server
@npm run server &
@npm run companies-service &
/**
* Created by enahum on 4/25/16.
*/
const http = require('http');
const express = require('express');
const cors = require('cors');
const path = require('path');
const fs = require('fs');
const logger = require('morgan');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const Promise = require('bluebird');
const _ = require('lodash');
const port = normalizePort(process.env.PORT || '8001'); //eslint-disable-line no-process-env
const app = express();
app.set('port', port);
app.use(cors());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.get('/list', (req, res) => {
readCompanies().
then((data) => {
return res.json(data);
}).
catch((err) => {
return res.status(500).json(err);
});
});
app.get('/company/:id', (req, res) => {
readCompanies().
then((data) => {
const company = _.find(data, {id: req.params.id});
if (company) {
return res.json(company);
}
return res.status(404).json({
code: 404,
message: 'Company not found'
});
}).
catch((err) => {
return res.status(500).json(err);
});
});
app.get('/company/:id/invoices', (req, res) => {
return res.json([]);
});
// catch 404 and forward to error handler
app.use((req, res, next) => {
const err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use((err, req, res) => {
res.status(err.status || 500);
res.json({
message: err.message,
error: err
});
});
}
/**
* Create HTTP server.
*/
const server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
const p = parseInt(val, 10);
if (isNaN(p)) {
// named pipe
return val;
}
if (p >= 0) {
// port number
return p;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges'); //eslint-disable-line no-console
process.exit(1); //eslint-disable-line no-process-exit
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use'); //eslint-disable-line no-console
process.exit(1); //eslint-disable-line no-process-exit
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
const addr = server.address();
const bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port;
console.info('ZBox Companies Test Server listening on ' + bind); //eslint-disable-line no-console
}
function readCompanies() {
return new Promise((resolve, reject) => {
const filename = path.join(__dirname, 'companies', 'list.json');
fs.readFile(filename, (err, data) => {
if (err) {
return reject(err);
}
return resolve(JSON.parse(data));
});
});
}
[
{
"id": "24346664-4",
"name": "ZBox"
}
]
......@@ -3,6 +3,7 @@
"version": "0.0.1",
"private": true,
"dependencies": {
"bluebird": "^3.3.5",
"bootstrap": "3.3.6",
"compass-mixins": "0.12.7",
"flux": "2.1.1",
......@@ -31,17 +32,24 @@
"babel-preset-react": "6.5.0",
"babel-preset-stage-0": "6.5.0",
"babel-runtime": "^6.6.1",
"body-parser": "^1.15.0",
"cookie-parser": "^1.4.1",
"copy-webpack-plugin": "1.1.1",
"cors": "^2.7.1",
"css-loader": "0.23.1",
"debug": "^2.2.0",
"eslint": "2.7.0",
"eslint-plugin-react": "4.3.0",
"exports-loader": "0.6.3",
"express": "^4.13.4",
"extract-text-webpack-plugin": "1.0.1",
"file-loader": "0.8.5",
"html-loader": "0.4.3",
"http-proxy": "^1.13.2",
"imports-loader": "0.6.5",
"json-loader": "0.5.4",
"lodash": "^4.11.1",
"morgan": "^1.7.0",
"node-sass": "3.4.2",
"raw-loader": "0.5.1",
"sass-loader": "3.2.0",
......@@ -54,6 +62,7 @@
"build": "webpack",
"run": "webpack --progress --watch",
"run-fullmap": "webpack --progress --watch",
"companies-service": "babel-node companies-service.js",
"server": "babel-node server.js"
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment