Mercurial > hg > isophonics-drupal-site
view vendor/jcalderonzumba/gastonjs/src/Client/Server/server.js @ 9:1fc0ff908d1f
Add another data file
author | Chris Cannam |
---|---|
date | Mon, 05 Feb 2018 12:34:32 +0000 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
Poltergeist.Server = (function () { /** * Server constructor * @param owner * @param port * @constructor */ function Server(owner, port) { this.server = require('webserver').create(); this.port = port; this.owner = owner; this.webServer = null; } /** * Starts the web server */ Server.prototype.start = function () { var self = this; this.webServer = this.server.listen(this.port, function (request, response) { self.handleRequest(request, response); }); }; /** * Send error back with code and message * @param response * @param code * @param message * @return {boolean} */ Server.prototype.sendError = function (response, code, message) { response.statusCode = code; response.setHeader('Content-Type', 'application/json'); response.write(JSON.stringify(message, null, 4)); response.close(); return true; }; /** * Send response back to the client * @param response * @param data * @return {boolean} */ Server.prototype.send = function (response, data) { console.log("RESPONSE: " + JSON.stringify(data, null, 4).substr(0, 200)); response.statusCode = 200; response.setHeader('Content-Type', 'application/json'); response.write(JSON.stringify(data, null, 4)); response.close(); return true; }; /** * Handles a request to the server * @param request * @param response * @return {boolean} */ Server.prototype.handleRequest = function (request, response) { var commandData; if (request.method !== "POST") { return this.sendError(response, 405, "Only POST method is allowed in the service"); } console.log("REQUEST: " + request.post + "\n"); try { commandData = JSON.parse(request.post); } catch (parseError) { return this.sendError(response, 400, "JSON data invalid error: " + parseError.message); } return this.owner.serverRunCommand(commandData, response); }; return Server; })();