node.jsproxywps

Start a proxy server with nodejs so that it serves requests preprended with "/wps_proxy/wps_proxy?url="


I want to start a proxy server with node.js so that it serves requests preprended with "/wps_proxy/wps_proxy?url=". I want it so I can use the wps-js library of north52 (check the installation tips) . I have already a server where I run my application.

What I did try until now is :

the server.js file

var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var path = require("path");

var app = express();
app.use(express.static(__dirname + '/' + 'public'));

var urlencodedParser = bodyParser.urlencoded({ extended: false });

//****** this is my try ******************************

app.get('/wps_proxy/wps_proxy',function (req,res){
    res.sendfile(__dirname + '/' + 'public/wps_proxy/wps-js/target/wps-js-0.1.2-SNAPSHOT/example.html');

    if(req.query !== undefined){//because it enters sometimes without url

    var http = require('http');

    //Options to be used by request
    var options = {
        host:"geostatistics.demo.52north.org",//fixed given data
        port:"80",
        path:"/wps/WebProcessingService"
    };
    var callback = function(response){
        var dat = "";
        response.on("data",function(data){
            dat+=data;
        });
        response.on("end", function(){
            res.end(dat)
        })

    };
    //Make the request
    var req = http.request(options,callback);
    req.end()
    }       
})
var ipaddress = process.env.OPENSHIFT_NODEJS_IP||'127.0.0.1';
var port      = process.env.OPENSHIFT_NODEJS_PORT || 8080;

app.set('port', port);

app.listen(app.get('port'),ipaddress, function() {
    console.log( 'Server started on port ' + app.get('port'))
})

//***************************************

but its not working.. I think that the data are not sent back correctly..

This is a live example of what I want to do.. http://geoprocessing.demo.52north.org/wps-js-0.1.1/

and this is a live example of my application (check the console for errors) http://gws-hydris.rhcloud.com/wps_proxy/wps_proxy


Solution

  • I did find my answer from this post How to create a simple http proxy in node.js? so the way i solve it was:

    app.get('/wps_proxy/wps_proxy',function (req,res){
    
         var queryData = url.parse(req.url, true).query;
    if (queryData.url) {
        request({
            url: queryData.url
        }).on('error', function(e) {
            res.end(e);
        }).pipe(res);
    }
    else {
        res.end("no url found");
    }       
    })