mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
parent
27e34f20fb
commit
961c9f3fa9
@ -199,6 +199,8 @@
|
|||||||
|
|
||||||
<script type="text/x-red" data-help-name="twitter out">
|
<script type="text/x-red" data-help-name="twitter out">
|
||||||
<p>Twitter out node. Tweets the <b>msg.payload</b>.</p>
|
<p>Twitter out node. Tweets the <b>msg.payload</b>.</p>
|
||||||
|
<p>If <b>msg.media</b> exists and is a Buffer object, this node will treat it
|
||||||
|
as an image and attach it to the tweet.</p>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
@ -18,6 +18,7 @@ module.exports = function(RED) {
|
|||||||
"use strict";
|
"use strict";
|
||||||
var ntwitter = require('twitter-ng');
|
var ntwitter = require('twitter-ng');
|
||||||
var OAuth= require('oauth').OAuth;
|
var OAuth= require('oauth').OAuth;
|
||||||
|
var request = require('request');
|
||||||
|
|
||||||
function TwitterNode(n) {
|
function TwitterNode(n) {
|
||||||
RED.nodes.createNode(this,n);
|
RED.nodes.createNode(this,n);
|
||||||
@ -241,21 +242,54 @@ module.exports = function(RED) {
|
|||||||
consumer_secret: "meRsltCktVMUI8gmggpXett7WBLd1k0qidYazoML6g",
|
consumer_secret: "meRsltCktVMUI8gmggpXett7WBLd1k0qidYazoML6g",
|
||||||
access_token_key: credentials.access_token,
|
access_token_key: credentials.access_token,
|
||||||
access_token_secret: credentials.access_token_secret
|
access_token_secret: credentials.access_token_secret
|
||||||
}).verifyCredentials(function (err, data) {
|
});
|
||||||
if (err) {
|
|
||||||
node.error("Error verifying credentials: " + err);
|
|
||||||
} else {
|
|
||||||
node.on("input", function(msg) {
|
node.on("input", function(msg) {
|
||||||
if (msg != null) {
|
if (msg != null) {
|
||||||
|
|
||||||
|
node.status({fill:"blue",shape:"dot",text:"tweeting"});
|
||||||
|
|
||||||
if (msg.payload.length > 140) {
|
if (msg.payload.length > 140) {
|
||||||
msg.payload = msg.payload.slice(0,139);
|
msg.payload = msg.payload.slice(0,139);
|
||||||
node.warn("Tweet greater than 140 : truncated");
|
node.warn("Tweet greater than 140 : truncated");
|
||||||
}
|
}
|
||||||
twit.updateStatus(msg.payload, function (err, data) {
|
|
||||||
if (err) node.error(err);
|
if (msg.media && Buffer.isBuffer(msg.media)) {
|
||||||
});
|
var apiUrl = "https://api.twitter.com/1.1/statuses/update_with_media.json";
|
||||||
|
var signedUrl = oa.signUrl(apiUrl,
|
||||||
|
credentials.access_token,
|
||||||
|
credentials.access_token_secret,
|
||||||
|
"POST");
|
||||||
|
|
||||||
|
var r = request.post(signedUrl,function(err,httpResponse,body) {
|
||||||
|
if (err) {
|
||||||
|
node.error(err.toString());
|
||||||
|
node.status({fill:"red",shape:"ring",text:"failed"});
|
||||||
|
} else {
|
||||||
|
var response = JSON.parse(body);
|
||||||
|
if (body.errors) {
|
||||||
|
var errorList = body.errors.map(function(er) { return er.code+": "+er.message }).join(", ");
|
||||||
|
node.error("tweet failed: "+errorList);
|
||||||
|
node.status({fill:"red",shape:"ring",text:"failed"});
|
||||||
|
} else {
|
||||||
|
node.status({});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
var form = r.form();
|
||||||
|
form.append("status",msg.payload);
|
||||||
|
form.append("media[]",msg.media,{filename:"image"});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
twit.updateStatus(msg.payload, function (err, data) {
|
||||||
|
if (err) {
|
||||||
|
node.status({fill:"red",shape:"ring",text:"failed"});
|
||||||
|
node.error(err);
|
||||||
|
}
|
||||||
|
node.status({});
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,8 @@
|
|||||||
"cheerio":"0.15.0",
|
"cheerio":"0.15.0",
|
||||||
"uglify-js":"2.4.13",
|
"uglify-js":"2.4.13",
|
||||||
"nodemailer":"1.2.0",
|
"nodemailer":"1.2.0",
|
||||||
"imap":"0.8.13"
|
"imap":"0.8.13",
|
||||||
|
"request":"~2.40.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"grunt": "0.4.4",
|
"grunt": "0.4.4",
|
||||||
|
Loading…
Reference in New Issue
Block a user