diff options
author | Timoney, Daniel (dt5972) <dtimoney@att.com> | 2017-02-15 10:37:53 -0500 |
---|---|---|
committer | Timoney, Daniel (dt5972) <dtimoney@att.com> | 2017-02-15 10:40:37 -0500 |
commit | 324ee36fe31763e507b422ab0a88e4230045e205 (patch) | |
tree | d0b04520f6657601c918ce63fd27575977624187 /dgbuilder/core_nodes/social/27-twitter.html | |
parent | f0c97e8db427481e28c0a16b789bc73801b35e47 (diff) |
Initial commit for OpenECOMP SDN-C OA&M
Change-Id: I7ab579fd0d206bf356f36d52dcdf4f71f1fa2680
Signed-off-by: Timoney, Daniel (dt5972) <dtimoney@att.com>
Former-commit-id: 2a9f0edd09581f907e62ec4689b5ac94dd5382ba
Diffstat (limited to 'dgbuilder/core_nodes/social/27-twitter.html')
-rw-r--r-- | dgbuilder/core_nodes/social/27-twitter.html | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/dgbuilder/core_nodes/social/27-twitter.html b/dgbuilder/core_nodes/social/27-twitter.html new file mode 100644 index 00000000..99d45213 --- /dev/null +++ b/dgbuilder/core_nodes/social/27-twitter.html @@ -0,0 +1,223 @@ +<!-- + Copyright 2013 IBM Corp. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script type="text/x-red" data-template-name="twitter-credentials"> + <div class="form-row" id="node-config-twitter-row"></div> + <input type="hidden" id="node-config-input-screen_name"> +</script> + +<script type="text/javascript"> +(function() { + var twitterConfigNodeId = null; + var twitterConfigNodeIntervalId = null; + + function showTwitterAuthStart() { + var pathname = document.location.pathname; + if (pathname.slice(-1) != "/") { + pathname += "/"; + } + var callback = encodeURIComponent(location.protocol+"//"+location.hostname+":"+location.port+pathname+"twitter-credentials/"+twitterConfigNodeId+"/auth/callback"); + $("#node-config-dialog-ok").button("disable"); + $("#node-config-twitter-row").html('<div style="text-align: center; margin-top: 20px; "><a class="btn" id="node-config-twitter-start" href="twitter-credentials/'+twitterConfigNodeId+'/auth?callback='+callback+'" target="_blank">Click here to authenticate with Twitter.</a></div>'); + $("#node-config-twitter-start").click(function() { + twitterConfigNodeIntervalId = window.setTimeout(pollTwitterCredentials,2000); + }); + } + function updateTwitterScreenName(sn) { + $("#node-config-input-screen_name").val(sn); + $("#node-config-twitter-row").html('<label><i class="fa fa-user"></i> Twitter ID</label><span class="input-xlarge uneditable-input">'+sn+'</span>'); + } + function pollTwitterCredentials(e) { + $.getJSON('credentials/twitter-credentials/'+twitterConfigNodeId,function(data) { + if (data.screen_name) { + updateTwitterScreenName(data.screen_name); + twitterConfigNodeIntervalId = null; + $("#node-config-dialog-ok").button("enable"); + } else { + twitterConfigNodeIntervalId = window.setTimeout(pollTwitterCredentials,2000); + } + }) + } + RED.nodes.registerType('twitter-credentials',{ + category: 'config', + defaults: { + screen_name: {value:""} + }, + credentials: { + screen_name: {type:"text"}, + access_token: {type: "password"}, + access_token_secret: {type:"password"} + }, + + label: function() { + return this.screen_name; + }, + exportable: false, + oneditprepare: function() { + twitterConfigNodeId = this.id; + if (!this.screen_name || this.screen_name == "") { + showTwitterAuthStart(); + } else { + if (this.credentials.screen_name) { + updateTwitterScreenName(this.credentials.screen_name); + } else { + showTwitterAuthStart(); + } + } + }, + oneditsave: function() { + if (twitterConfigNodeIntervalId) { + window.clearTimeout(twitterConfigNodeIntervalId); + } + }, + oneditcancel: function(adding) { + if (twitterConfigNodeIntervalId) { + window.clearTimeout(twitterConfigNodeIntervalId); + } + } + }); +})(); +</script> + +<script type="text/x-red" data-template-name="twitter in"> + <div class="form-row"> + <label for="node-input-twitter"><i class="fa fa-user"></i> Log in as</label> + <input type="text" id="node-input-twitter"> + </div> + <div class="form-row"> + <label for="node-input-user"><i class="fa fa-search"></i> Search</label> + <select type="text" id="node-input-user" style="display: inline-block; vertical-align: middle; width:60%;"> + <option value="false">all public tweets</option> + <option value="true">the tweets of who you follow</option> + <option value="user">the tweets of specific users</option> + <option value="dm">your direct messages</option> + </select> + </div> + <div class="form-row" id="node-input-tags-row"> + <label for="node-input-tags"><i class="fa fa-tags"></i> <span id="node-input-tags-label">for</span></label> + <input type="text" id="node-input-tags" placeholder="comma-separated words, @ids, #tags"> + </div> + <div class="form-row"> + <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> + <input type="text" id="node-input-name" placeholder="Name"> + </div> + <div class="form-tips">Tip: Use commas without spaces between multiple search terms. Comma = OR, Space = AND. + <br/>The Twitter API WILL NOT deliver 100% of all tweets. + <br/>Tweets of who you follow will include their retweets and favourites.</div> +</script> + +<script type="text/x-red" data-help-name="twitter in"> + <p>Twitter input node. Can be used to search either: + <ul><li>the public or a user's stream for tweets containing the configured search term</li> + <li>all tweets by specific users</li> + <li>direct messages received by the authenticated user</li> + </ul></p> + <p>Use space for <i>and</i> and comma , for <i>or</i> when searching for multiple terms.</p> + <p>Sets the <b>msg.topic</b> to <i>tweets/</i> and then appends the senders screen name.</p> + <p>Sets <b>msg.location</b> to the tweeters location if known.</p> + <p>Sets <b>msg.tweet</b> to the full tweet object as documented by <a href="https://dev.twitter.com/docs/platform-objects/tweets">Twitter</a>. + <p><b>Note:</b> when set to a specific user's tweets, or your direct messages, the node is subject to + Twitter's API rate limiting. If you deploy the flows multiple times within a 15 minute window, you may + exceed the limit and will see errors from the node. These errors will clear when the current 15 minute window + passes.</p> +</script> + +<script type="text/javascript"> + RED.nodes.registerType('twitter in',{ + category: 'social-input', + color:"#C0DEED", + defaults: { + twitter: {type:"twitter-credentials",required:true}, + tags: {value:"",validate:function(v) { return this.user == "dm" || v.length > 0;}}, + user: {value:"false",required:true}, + name: {value:""}, + topic: {value:"tweets"} + }, + inputs:0, + outputs:1, + icon: "twitter.png", + label: function() { + if (this.name) { + return this.name; + } + if (this.user == "dm") { + var user = RED.nodes.node(this.twitter); + return (user?user.label()+" ":"")+"DMs"; + } else if (this.user == "user") { + return this.tags+" tweets"; + } + return this.tags; + }, + labelStyle: function() { + return this.name?"node_label_italic":""; + }, + oneditprepare: function() { + $("#node-input-user").change(function() { + var type = $("#node-input-user option:selected").val(); + if (type == "user") { + $("#node-input-tags-row").show(); + $("#node-input-tags-label").html("User"); + $("#node-input-tags").attr("placeholder","comma-separated @twitter handles"); + } else if (type == "dm") { + $("#node-input-tags-row").hide(); + } else { + $("#node-input-tags-row").show(); + $("#node-input-tags-label").html("for"); + $("#node-input-tags").attr("placeholder","comma-separated words, @ids, #hashtags"); + } + + }); + $("#node-input-user").change(); + + } + }); +</script> + + +<script type="text/x-red" data-template-name="twitter out"> + <div class="form-row"> + <label for="node-input-twitter"><i class="fa fa-user"></i> Twitter</label> + <input type="text" id="node-input-twitter"> + </div> + <div class="form-row"> + <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> + <input type="text" id="node-input-name" placeholder="Name"> + </div> +</script> + +<script type="text/x-red" data-help-name="twitter out"> + <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 type="text/javascript"> + RED.nodes.registerType('twitter out',{ + category: 'social-output', + color:"#C0DEED", + defaults: { + twitter: {type:"twitter-credentials",required:true}, + name: {value:"Tweet"} + }, + inputs:1, + outputs:0, + icon: "twitter.png", + align: "right", + label: function() { + return this.name; + } + }); +</script> |