mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
parent
62389b487f
commit
35fb4bb47a
@ -20,28 +20,51 @@ var http = require("follow-redirects").http;
|
|||||||
var https = require("follow-redirects").https;
|
var https = require("follow-redirects").https;
|
||||||
var urllib = require("url");
|
var urllib = require("url");
|
||||||
var express = require("express");
|
var express = require("express");
|
||||||
|
var getBody = require('raw-body');
|
||||||
var jsonParser = express.json();
|
var jsonParser = express.json();
|
||||||
var urlencParser = express.urlencoded();
|
var urlencParser = express.urlencoded();
|
||||||
|
|
||||||
|
function rawBodyParser(req, res, next) {
|
||||||
|
if (req._body) return next();
|
||||||
|
req.body = "";
|
||||||
|
req._body = true;
|
||||||
|
getBody(req, {
|
||||||
|
limit: '1mb',
|
||||||
|
length: req.headers['content-length'],
|
||||||
|
encoding: 'utf8'
|
||||||
|
}, function (err, buf) {
|
||||||
|
if (err) return next(err);
|
||||||
|
req.body = buf;
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function HTTPIn(n) {
|
function HTTPIn(n) {
|
||||||
RED.nodes.createNode(this,n);
|
RED.nodes.createNode(this,n);
|
||||||
this.url = n.url;
|
this.url = n.url;
|
||||||
this.method = n.method;
|
this.method = n.method;
|
||||||
|
|
||||||
var node = this;
|
var node = this;
|
||||||
|
|
||||||
|
this.errorHandler = function(err,req,res,next) {
|
||||||
|
node.warn(err);
|
||||||
|
res.send(500);
|
||||||
|
};
|
||||||
|
|
||||||
this.callback = function(req,res) {
|
this.callback = function(req,res) {
|
||||||
if (node.method == "post") { node.send({req:req,res:res,payload:req.body}); }
|
if (node.method == "post") { node.send({req:req,res:res,payload:req.body}); }
|
||||||
else if (node.method == "get") { node.send({req:req,res:res,payload:req.query}); }
|
else if (node.method == "get") { node.send({req:req,res:res,payload:req.query}); }
|
||||||
else node.send({req:req,res:res});
|
else node.send({req:req,res:res});
|
||||||
}
|
}
|
||||||
if (this.method == "get") {
|
if (this.method == "get") {
|
||||||
RED.app.get(this.url,this.callback);
|
RED.app.get(this.url,this.callback,errorHandler);
|
||||||
} else if (this.method == "post") {
|
} else if (this.method == "post") {
|
||||||
RED.app.post(this.url,jsonParser,urlencParser,this.callback);
|
RED.app.post(this.url,jsonParser,urlencParser,rawBodyParser,this.callback,this.errorHandler);
|
||||||
} else if (this.method == "put") {
|
} else if (this.method == "put") {
|
||||||
RED.app.put(this.url,jsonParser,urlencParser,this.callback);
|
RED.app.put(this.url,jsonParser,urlencParser,rawBodyParser,this.callback,this.errorHandler);
|
||||||
} else if (this.method == "delete") {
|
} else if (this.method == "delete") {
|
||||||
RED.app.delete(this.url,this.callback);
|
RED.app.delete(this.url,this.callback,errorHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.on("close",function() {
|
this.on("close",function() {
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
"clone": "~0.1.11",
|
"clone": "~0.1.11",
|
||||||
"mustache": "~0.7.2",
|
"mustache": "~0.7.2",
|
||||||
"cron":"1.x",
|
"cron":"1.x",
|
||||||
|
"raw-body":"~1.1.2",
|
||||||
"twitter-ng":"~0.6.2",
|
"twitter-ng":"~0.6.2",
|
||||||
"oauth":"~0.9.10",
|
"oauth":"~0.9.10",
|
||||||
"xml2js":"~0.2.8",
|
"xml2js":"~0.2.8",
|
||||||
|
Loading…
Reference in New Issue
Block a user