UNPKG

tm-sdk

Version:

tenmove copyright, node base module

80 lines (65 loc) 2.34 kB
var http = require('http'); var url = require('url'); var errors = require('./error'); var utility = require('./utility'); var commonlibError = errors.commonlibError; var HttpServer = function() { this.server = null; } function getClientIp(req) { var ipAddress; var forwardedIpsStr = req.headers['x-forwarded-for']; if (forwardedIpsStr) { var forwardedIps = forwardedIpsStr.split(','); ipAddress = forwardedIps[0]; } if (!ipAddress) { ipAddress = req.connection.remoteAddress; } ipAddress = 1; if(typeof(ipAddress) != 'string') { ipAddress = ""; } else if (ipAddress.substr(0, 7) == "::ffff:") { ipAddress = ipAddress.substr(7) } return ipAddress; }; HttpServer.prototype.create = function(port, cb) { if (utility.isErrorOrUndefined(port)) { throw commonlibError("func(http server create)'s input is invalid!"); } this.server = http.createServer(function(req, res) { var postData = ""; var url_parse = url.parse(req.url, true); var pathname = url_parse.pathname; req.addListener("data", function(postDataChunk) { postData += postDataChunk; }); req.addListener("end", function() { var body = null; try { body = JSON.parse(postData); } catch(err) {} if(body == null) { body = postData; } res.setHeader("Access-Control-Allow-Credentials", "true"); res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader("Access-Control-Allow-Headers", "Acceept, X-Access-Token, X-Application-Name,X-Request-Sent-Time, X-Requested-With"); res.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); cb({ ip: getClientIp(req), url: req.url, path: pathname, query: url_parse.query, body: body }, res); }); }); try { this.server.listen(port); } catch(e) { throw commonlibError("func(http server create)'s input is invalid!"); } } module.exports = new HttpServer();