diff --git a/Projects/Foundations/Icons/slack-bot.png b/Projects/Foundations/Icons/slack-bot.png index 1422ddd50..723581909 100644 Binary files a/Projects/Foundations/Icons/slack-bot.png and b/Projects/Foundations/Icons/slack-bot.png differ diff --git a/Projects/Foundations/Icons/twitter-bot.png b/Projects/Foundations/Icons/twitter-bot.png new file mode 100644 index 000000000..ffe5187d2 Binary files /dev/null and b/Projects/Foundations/Icons/twitter-bot.png differ diff --git a/Projects/Foundations/Schemas/App-Schema/twitter-bot.json b/Projects/Foundations/Schemas/App-Schema/twitter-bot.json index e3be86b55..27f8ab800 100644 --- a/Projects/Foundations/Schemas/App-Schema/twitter-bot.json +++ b/Projects/Foundations/Schemas/App-Schema/twitter-bot.json @@ -29,7 +29,7 @@ } ], "initialValues": { - "config": "{\n \"consumer_key\": \"TWITTER_CONSUMER_KEY\"\n \"consumer_secret\": \"TWITTER_CONSUMER_SECRET\"\n \"access_token_key\": \"TWITTER_ACCESS_TOKEN_KEY\"\n \"access_token_secret\": \"TWITTER_ACCESS_TOKEN_SECRET\"\n}" + "config": "{\n \"consumer_key\": \"TWITTER_CONSUMER_KEY\",\n \"consumer_secret\": \"TWITTER_CONSUMER_SECRET\",\n \"access_token_key\": \"TWITTER_ACCESS_TOKEN_KEY\",\n \"access_token_secret\": \"TWITTER_ACCESS_TOKEN_SECRET\"\n}" }, "addLeftIcons": true, "level": 3, diff --git a/Projects/Foundations/UI/Function-Libraries/SocialBotsFunctions.js b/Projects/Foundations/UI/Function-Libraries/SocialBotsFunctions.js index 5521ee04f..241537375 100644 --- a/Projects/Foundations/UI/Function-Libraries/SocialBotsFunctions.js +++ b/Projects/Foundations/UI/Function-Libraries/SocialBotsFunctions.js @@ -186,41 +186,49 @@ function newFoundationsFunctionLibrarySocialBotsFunctions() { } function sendTwitterTestMessage(node, callBackFunction) { - var Twitter = SA.nodeModules.twitter - - let consumer_key = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'consumer_key') - let consumer_secret = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'consumer_secret') - let access_token_key = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'access_token_key') - let access_token_secret = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'access_token_secret') - - if (process.env.TWITTER_CONSUMER_KEY) { - consumer_key = process.env.TWITTER_CONSUMER_KEY - } - if (process.env.TWITTER_CONSUMER_SECRET) { - consumer_secret = process.env.TWITTER_CONSUMER_SECRET - } - if (process.env.TWITTER_ACCESS_TOKEN_KEY) { - access_token_key = process.env.TWITTER_ACCESS_TOKEN_KEY - } - if (process.env.TWITTER_ACCESS_TOKEN_SECRET) { - access_token_secret = process.env.TWITTER_ACCESS_TOKEN_SECRET - } + let message = JSON.stringify({text: "Test message from Superalgos!"}) + let url = "https://api.twitter.com/1.1/statuses/update.json" - var twitterclient = new Twitter({ - consumer_key: consumer_key, - consumer_secret: consumer_secret, - access_token_key: access_token_key, - access_token_secret: access_token_secret - }); - - let message = JSON.stringify({status: "Test message from Superalgos!"}) + httpRequestJSON(message, url, onResponse) - twitterclient.post('statuses/update', message, function(error, tweet, response) { - if(error) { - callBackFunction({ result: "Fail", message: error }) + function onResponse(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setInfoMessage('Twitter status update sent.') + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + } else { + node.payload.uiObject.setErrorMessage('Could not send Twitter status update. Error Response: ' + err.message) + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) } - console.log(tweet); // Tweet body. - console.log(response); // Raw response object. - }); + } + + function httpRequestJSON(pContentToSend, pPath, callBackFunction) { + let xmlHttpRequest = new XMLHttpRequest(); + xmlHttpRequest.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, xmlHttpRequest.responseText); + return; + } else if (this.readyState === 4 && (this.status === 404 || this.status === 401 || this.status === 400)) { + callBackFunction({ + result: "Fail", + message: xmlHttpRequest.responseText + }); + return; + } + }; + + if (pContentToSend === undefined) { + xmlHttpRequest.open("GET", pPath, true); + xmlHttpRequest.send(); + } else { + try { + let blob = new Blob([pContentToSend]); + xmlHttpRequest.open("POST", pPath, true); + xmlHttpRequest.send(blob); + } catch (err) { + if (ERROR_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[ERROR] callServer -> err.message = " & err.message); } + callBackFunction({ result: "Fail", message: err.message }) + } + } + } } }