Skip to content

Instantly share code, notes, and snippets.

@valentinconan
Created July 2, 2018 10:03
Show Gist options
  • Select an option

  • Save valentinconan/79b5965e8a8b7fe0531a734fd0e2f2e9 to your computer and use it in GitHub Desktop.

Select an option

Save valentinconan/79b5965e8a8b7fe0531a734fd0e2f2e9 to your computer and use it in GitHub Desktop.

Revisions

  1. valentinconan created this gist Jul 2, 2018.
    121 changes: 121 additions & 0 deletions InterceptorNodeServer.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,121 @@
    /*
    npm install http
    npm install fs
    npm install path
    npm install xml
    npm install querystring
    */
    var http = require('http'),
    fileSystem = require('fs'),
    path = require('path'),
    xml = require('xml'),
    qs = require('querystring');

    http.createServer(function(req, res) {
    console.log('ok starting');
    console.log('Server running at '+req.url );
    try {
    let contentType = req.headers['content-type'];
    res.writeHead(200, {
    'Content-Type': contentType,
    'Access-Control-Allow-Origin':'*',
    'Access-Control-Allow-Methods':'GET, POST, OPTIONS, PUT, DELETE'
    });

    let body = [];
    req.on('error', (err) => {
    console.error(err);
    }).on('data', (chunk) => {
    body.push(chunk);
    }).on('end', () => {
    body = Buffer.concat(body).toString();

    if(body!=''){
    if(contentType==="application/json"){
    console.log(JSON.stringify(
    {
    "headers": req.rawHeaders,
    "body":JSON.parse(body)
    }
    ));
    res.end(JSON.stringify(
    {
    "headers": req.rawHeaders,
    "body":JSON.parse(body)
    }
    ));
    }else if(contentType==="application/xml" || contentType==="text/xml"){

    console.log(
    {
    "headers": req.headers,
    "body":body.toString()
    }
    );
    res.end(xml(
    {
    "root":{
    "headers": req.headers,
    "body":body.toString()
    }
    }
    ));
    }else{
    console.log(
    {
    "headers": req.rawHeaders,
    "body":body
    }
    );
    res.end("{headers: "+req.rawHeaders+","+"body:"+body+"}");
    }

    }else{

    if(contentType==="application/json"){
    console.log(JSON.stringify(
    {
    "headers": req.rawHeaders
    }
    ));
    res.end(JSON.stringify(
    {
    "headers": req.rawHeaders
    }
    ));
    }else if(contentType==="application/xml" || contentType==="text/xml"){
    console.log(JSON.stringify(
    {
    "headers": req.rawHeaders
    }
    ));
    res.end(xml(
    {
    "headers": req.rawHeaders
    }
    ));
    } else{
    console.log(JSON.stringify(
    {
    "headers": req.rawHeaders
    }
    ));
    res.end("{headers:"+req.rawHeaders+"}");

    }

    }

    });

    } catch (err) {
    console.log(err);
    res.writeHead(500, {
    'Content-Type': 'text/html',
    'Content-Length': 0
    });
    throw new Error('something bad happened conf must be http://localhost:3001/');
    }
    })
    .listen(3001);
    console.log('Server running. at http://127.0.0.1:3001/');