UNPKG

rapnc

Version:

Node client for RAP 1.0

95 lines (82 loc) 2.05 kB
var querystring = require('querystring'); var http = require('http'); function toQueryString(obj, prefix) { var params = ''; prefix = prefix || ''; if (!obj) { return params; } for(var prop in obj) { params += '&' + prefix + prop + '=' + obj[prop]; } return clean(params); } function clean(param) { if (!param) { return ''; } param = param.replace(/^&+/, ''); param = param.replace(/&{2,}/g, ''); return param; } function appendToUrl(url, params) { if (!params) { return url; } url += (url.indexOf('?') != -1 ? '&' : '?') + clean(params); return url; } /* var DEFAULT_OPTIONS = { method: 'get', body: null, host: 'localhost', port: '80' }; */ function ajax(options, callback) { options.method = options.method || 'get'; options.host = options.host || 'localhost'; options.port = options.port || 80; var postData = options.body; var method = options.method.toLowerCase(); var content = null; if (method == 'post') { content = querystring.stringify(postData); } var reqOptions = { host: options.host, port: options.port, path: appendToUrl(options.path, options.params), method: method, agent: false }; if (method == 'post') { reqOptions.headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': content.length }; } var req = http.request(reqOptions, function(res) { res.setEncoding('utf8'); var data = ''; res.on('data', function(chunk){ data += chunk; }); res.on('end', function(){ callback(null, data) }); }); req.on('error', function (err) { callback(err); }) if (method == 'post') { req.write(content); } req.end(); } module.exports = { ajax: ajax, toQueryString: toQueryString, appendToUrl: appendToUrl }