@@ -564,7 +564,7 @@ module.exports = function(RED) {
564564 } ) ;
565565
566566 node . on ( "input" , function ( msg ) {
567- if ( msg . hasOwnProperty ( "payload" ) ) {
567+ if ( msg . hasOwnProperty ( "payload" ) || msg . hasOwnProperty ( "retweet" ) ) {
568568 node . status ( { fill :"blue" , shape :"dot" , text :"twitter.status.tweeting" } ) ;
569569 if ( msg . payload . slice ( 0 , 2 ) . toLowerCase ( ) === "d " ) {
570570 var dm_user ;
@@ -605,6 +605,24 @@ module.exports = function(RED) {
605605 node . error ( err , msg ) ;
606606 node . status ( { fill :"red" , shape :"ring" , text :"twitter.status.failed" } ) ;
607607 } )
608+ } else if ( msg . retweet ) {
609+ node . twitterConfig . post ( "https://api.twitter.com/1.1/statuses/retweet/" + msg . retweet , { } , msg . params || { } )
610+ . then ( function ( result ) {
611+ if ( result . status === 200 ) {
612+ node . status ( { } ) ;
613+ } else {
614+ node . status ( { fill :"red" , shape :"ring" , text :"twitter.status.failed" } ) ;
615+
616+ if ( 'error' in result . body && typeof result . body . error === 'string' ) {
617+ node . error ( result . body . error , msg ) ;
618+ } else {
619+ node . error ( result . body . errors [ 0 ] . message , msg ) ;
620+ }
621+ }
622+ } ) . catch ( function ( err ) {
623+ node . status ( { fill :"red" , shape :"ring" , text :"twitter.status.failed" } ) ;
624+ node . error ( err , msg ) ;
625+ } )
608626 } else {
609627 if ( msg . payload . length > 280 ) {
610628 msg . payload = msg . payload . slice ( 0 , 279 ) ;
@@ -657,44 +675,6 @@ module.exports = function(RED) {
657675 node . status ( { fill :"red" , shape :"ring" , text :"twitter.status.failed" } ) ;
658676 node . error ( err , msg ) ;
659677 } ) ;
660- // if (msg.payload.length > 280) {
661- // msg.payload = msg.payload.slice(0,279);
662- // node.warn(RED._("twitter.errors.truncated"));
663- // }
664- // if (msg.media && Buffer.isBuffer(msg.media)) {
665- // var apiUrl = "https://api.twitter.com/1.1/statuses/update_with_media.json";
666- // var signedUrl = oa.signUrl(apiUrl,credentials.access_token,credentials.access_token_secret,"POST");
667- // var r = request.post(signedUrl,function(err,httpResponse,body) {
668- // if (err) {
669- // node.error(err,msg);
670- // node.status({fill:"red",shape:"ring",text:"twitter.status.failed"});
671- // }
672- // else {
673- // var response = JSON.parse(body);
674- // if (response.errors) {
675- // var errorList = response.errors.map(function(er) { return er.code+": "+er.message }).join(", ");
676- // node.error(RED._("twitter.errors.sendfail",{error:errorList}),msg);
677- // node.status({fill:"red",shape:"ring",text:"twitter.status.failed"});
678- // }
679- // else {
680- // node.status({});
681- // }
682- // }
683- // });
684- // var form = r.form();
685- // form.append("status",msg.payload);
686- // form.append("media[]",msg.media,{filename:"image"});
687- //
688- // } else {
689- // if (typeof msg.params === 'undefined') { msg.params = {}; }
690- // twit.updateStatus(msg.payload, msg.params, function (err, data) {
691- // if (err) {
692- // node.status({fill:"red",shape:"ring",text:"twitter.status.failed"});
693- // node.error(err,msg);
694- // }
695- // node.status({});
696- // });
697- // }
698678 }
699679 }
700680 } ) ;
0 commit comments