Jump To …

node_proxy.js

var http = require('http'),
    request = require('request');
    
http.createServer(function (req, res) {

console.log(req);

        
    if (req.url.match('^\\/proxy.*') && req.method === 'POST') {

handle XSScripting proxy calls

       post_handler(req, function(req_data) {
           req_data = JSON.parse(req_data);
           console.log("Received proxy call with data:");
           console.log(req_data);
           
          var r = request({
               method : (req_data.verb)? req_data.verb : "GET",
               uri : req_data.proxy_url,
               body : req_data.content,
               headers: {
                   "Accept": (req_data.format)? req_data.format : "text/plain"
               }
            }, function (error, response, body) {
              if(response.statusCode == 200) {
                res.writeHead(response.statusCode, {'Content-Type': (req_data.format)? req_data.format : "text/plain"});
                res.end(body);
              } else {
                res.writeHead(response.statusCode, {'Content-Type': 'text/plain'});
                res.end(body);
              }
            });
	    });
    }
    else {

do normal request handling

      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Normal request...\n');
    }
    
}).listen(8124, "127.0.0.1");

data format:

/* {
     proxy_url: url, 
     content: text,
     verb: "POST",
     format: "application/rdf+json" (e.g.)
}*/
function do_Request (data, res) {
    
};

function post_handler(request, callback) {
    var content = '';

    request.addListener('data', function(chunk) {
        content += chunk;
	});

	request.addListener('end', function() {
	    callback(content);
	});
};
console.log('Server running at http://127.0.0.1:8124/');