From b98ef2a4c82271158766340084cae1bc221a3c83 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 14 Mar 2018 01:15:30 +0100 Subject: [PATCH 1/5] DMs are coming back :) --- social/twitter/27-twitter.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/social/twitter/27-twitter.js b/social/twitter/27-twitter.js index 033d482a1..1d8e49316 100644 --- a/social/twitter/27-twitter.js +++ b/social/twitter/27-twitter.js @@ -403,8 +403,18 @@ module.exports = function(RED) { node.warn(RED._("twitter.errors.truncated")); } - if (msg.media && Buffer.isBuffer(msg.media)) { + if (msg.payload.slice(0,2) == "D ") { + // split payload for legacy direct message support ("D user message") + var dm=true; + var dm_split=msg.payload.match(/D\s+(\S+)\s+(.*)/); + var dm_dst=dm_split[1]; + msg.payload=dm_split[2]; + } + if (msg.media && Buffer.isBuffer(msg.media) || dm) { var apiUrl = "https://api.twitter.com/1.1/statuses/update_with_media.json"; + if (dm) { + apiUrl = "https://api.twitter.com/1.1/direct_messages/new.json"; + } var signedUrl = oa.signUrl(apiUrl, credentials.access_token, credentials.access_token_secret, @@ -428,8 +438,13 @@ module.exports = function(RED) { } }); var form = r.form(); - form.append("status",msg.payload); - form.append("media[]",msg.media,{filename:"image"}); + if (dm) { + form.append("screen_name",dm_dst); + form.append("text",msg.payload); + } else { + form.append("status",msg.payload); + form.append("media[]",msg.media,{filename:"image"}); + } } else { From d5939d5be967577e3945c074b2b7f65ef59bb2d1 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 15 Mar 2018 00:07:03 +0100 Subject: [PATCH 2/5] A (very) little cleaning (still dirty, but working). --- social/twitter/27-twitter.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/social/twitter/27-twitter.js b/social/twitter/27-twitter.js index 1d8e49316..bd8457fbf 100644 --- a/social/twitter/27-twitter.js +++ b/social/twitter/27-twitter.js @@ -398,11 +398,6 @@ module.exports = function(RED) { if (msg.hasOwnProperty("payload")) { node.status({fill:"blue",shape:"dot",text:"twitter.status.tweeting"}); - if (msg.payload.length > 280) { - msg.payload = msg.payload.slice(0,279); - node.warn(RED._("twitter.errors.truncated")); - } - if (msg.payload.slice(0,2) == "D ") { // split payload for legacy direct message support ("D user message") var dm=true; @@ -410,6 +405,10 @@ module.exports = function(RED) { var dm_dst=dm_split[1]; msg.payload=dm_split[2]; } + if (msg.payload.length > 280) { + msg.payload = msg.payload.slice(0,279); + node.warn(RED._("twitter.errors.truncated")); + } if (msg.media && Buffer.isBuffer(msg.media) || dm) { var apiUrl = "https://api.twitter.com/1.1/statuses/update_with_media.json"; if (dm) { From 86d863ab604209ecf00d99428f93e7d880c0d6fd Mon Sep 17 00:00:00 2001 From: root Date: Thu, 15 Mar 2018 00:17:35 +0100 Subject: [PATCH 3/5] A (very) little cleaning (still dirty, but working). --- social/twitter/27-twitter.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/social/twitter/27-twitter.js b/social/twitter/27-twitter.js index bd8457fbf..7eae1229e 100644 --- a/social/twitter/27-twitter.js +++ b/social/twitter/27-twitter.js @@ -400,15 +400,14 @@ module.exports = function(RED) { if (msg.payload.slice(0,2) == "D ") { // split payload for legacy direct message support ("D user message") - var dm=true; - var dm_split=msg.payload.match(/D\s+(\S+)\s+(.*)/); - var dm_dst=dm_split[1]; - msg.payload=dm_split[2]; + var dm=true, dm_dst; + [dm_dst,msg.payload]=msg.payload.match(/D\s+(\S+)\s+(.*)/).slice(1); } if (msg.payload.length > 280) { msg.payload = msg.payload.slice(0,279); node.warn(RED._("twitter.errors.truncated")); } + if (msg.media && Buffer.isBuffer(msg.media) || dm) { var apiUrl = "https://api.twitter.com/1.1/statuses/update_with_media.json"; if (dm) { From 7e342173aeab946a632b0e905ee0d872dcae11dd Mon Sep 17 00:00:00 2001 From: root Date: Fri, 16 Mar 2018 18:57:29 +0100 Subject: [PATCH 4/5] Proper way to bring back direct messages to life, keeping the syntax "D " --- social/twitter/27-twitter.js | 40 +++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/social/twitter/27-twitter.js b/social/twitter/27-twitter.js index 7eae1229e..ed5abc23e 100644 --- a/social/twitter/27-twitter.js +++ b/social/twitter/27-twitter.js @@ -399,7 +399,7 @@ module.exports = function(RED) { node.status({fill:"blue",shape:"dot",text:"twitter.status.tweeting"}); if (msg.payload.slice(0,2) == "D ") { - // split payload for legacy direct message support ("D user message") + // direct message syntax: "D user message" var dm=true, dm_dst; [dm_dst,msg.payload]=msg.payload.match(/D\s+(\S+)\s+(.*)/).slice(1); } @@ -408,11 +408,8 @@ module.exports = function(RED) { node.warn(RED._("twitter.errors.truncated")); } - if (msg.media && Buffer.isBuffer(msg.media) || dm) { + if (msg.media && Buffer.isBuffer(msg.media)) { var apiUrl = "https://api.twitter.com/1.1/statuses/update_with_media.json"; - if (dm) { - apiUrl = "https://api.twitter.com/1.1/direct_messages/new.json"; - } var signedUrl = oa.signUrl(apiUrl, credentials.access_token, credentials.access_token_secret, @@ -436,24 +433,29 @@ module.exports = function(RED) { } }); var form = r.form(); - if (dm) { - form.append("screen_name",dm_dst); - form.append("text",msg.payload); - } else { - form.append("status",msg.payload); - form.append("media[]",msg.media,{filename:"image"}); - } + form.append("status",msg.payload); + form.append("media[]",msg.media,{filename:"image"}); } else { if (typeof msg.params === 'undefined') { msg.params = {}; } - twit.updateStatus(msg.payload, msg.params, function (err, data) { - if (err) { - node.status({fill:"red",shape:"ring",text:"twitter.status.failed"}); - node.error(err,msg); - } - node.status({}); - }); + if (dm) { + twit.newDirectMessage(dm_dst,msg.payload, msg.params, function (err, data) { + if (err) { + node.status({fill:"red",shape:"ring",text:"twitter.status.failed"}); + node.error(err,msg); + } + node.status({}); + }); + } else { + twit.updateStatus(msg.payload, msg.params, function (err, data) { + if (err) { + node.status({fill:"red",shape:"ring",text:"twitter.status.failed"}); + node.error(err,msg); + } + node.status({}); + }); + } } } else { node.warn(RED._("twitter.errors.nopayload")); } From 69b17e297b654900ea3ae92ba57befcb6b1a5e97 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 16 Mar 2018 22:10:07 +0100 Subject: [PATCH 5/5] Corrections of my dirty code to make Travis happy (verifications failed for the pull request). --- social/twitter/27-twitter.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/social/twitter/27-twitter.js b/social/twitter/27-twitter.js index ed5abc23e..01f20a063 100644 --- a/social/twitter/27-twitter.js +++ b/social/twitter/27-twitter.js @@ -386,6 +386,7 @@ module.exports = function(RED) { this.twitterConfig = RED.nodes.getNode(this.twitter); var credentials = RED.nodes.getCredentials(this.twitter); var node = this; + var dm_user; if (credentials && credentials.screen_name == this.twitterConfig.screen_name) { var twit = new Ntwitter({ @@ -400,8 +401,7 @@ module.exports = function(RED) { if (msg.payload.slice(0,2) == "D ") { // direct message syntax: "D user message" - var dm=true, dm_dst; - [dm_dst,msg.payload]=msg.payload.match(/D\s+(\S+)\s+(.*)/).slice(1); + [dm_user,msg.payload]=msg.payload.match(/D\s+(\S+)\s+(.*)/).slice(1); } if (msg.payload.length > 280) { msg.payload = msg.payload.slice(0,279); @@ -439,8 +439,8 @@ module.exports = function(RED) { } else { if (typeof msg.params === 'undefined') { msg.params = {}; } - if (dm) { - twit.newDirectMessage(dm_dst,msg.payload, msg.params, function (err, data) { + if (dm_user) { + twit.newDirectMessage(dm_user,msg.payload, msg.params, function (err, data) { if (err) { node.status({fill:"red",shape:"ring",text:"twitter.status.failed"}); node.error(err,msg);