Advertisement
Handoncloud

Untitled

Aug 7th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  Twitter client app
  3.  */
  4.  
  5. var OAuth = require('oauth').OAuth;
  6. var qs = require('qs');
  7.  
  8. function Twitter(config) {
  9.     this.consumerKey = config.consumerKey;
  10.     this.consumerSecret = config.consumerSecret;
  11.     this.accessToken = config.accessToken;
  12.     this.accessTokenSecret = config.accessTokenSecret;
  13.     this.callBackUrl = config.callBackUrl;
  14.     this.baseUrl = 'https://api.twitter.com/1.1';
  15.     this.oauth = new OAuth(
  16.         'https://api.twitter.com/oauth/request_token',
  17.         'https://api.twitter.com/oauth/access_token',
  18.         this.consumerKey,
  19.         this.consumerSecret,
  20.         '1.0',
  21.         this.callBackUrl,
  22.         'HMAC-SHA1'
  23.     );
  24. }
  25.  
  26. Twitter.prototype.getOAuthRequestToken = function (next) {
  27.     this.oauth.getOAuthRequestToken(function (error, oauth_token, oauth_token_secret, results) {
  28.         if (error) {
  29.             console.log('ERROR: ' + error);
  30.             next();
  31.         }
  32.         else {
  33.             var oauth = {};
  34.             oauth.token = oauth_token;
  35.             oauth.token_secret = oauth_token_secret;
  36.             console.log('oauth.token: ' + oauth.token);
  37.             console.log('oauth.token_secret: ' + oauth.token_secret);
  38.             next(oauth);
  39.         }
  40.     });
  41. };
  42.  
  43. Twitter.prototype.getOAuthAccessToken = function (oauth, next) {
  44.     this.oauth.getOAuthAccessToken(oauth.token, oauth.token_secret, oauth.verifier,
  45.         function (error, oauth_access_token, oauth_access_token_secret, results) {
  46.             if (error) {
  47.                 console.log('ERROR: ' + error);
  48.                 next();
  49.             } else {
  50.                 oauth.access_token = oauth_access_token;
  51.                 oauth.access_token_secret = oauth_access_token_secret;
  52.  
  53.                 console.log('oauth.token: ' + oauth.token);
  54.                 console.log('oauth.token_secret: ' + oauth.token_secret);
  55.                 console.log('oauth.access_token: ' + access_token.token);
  56.                 console.log('oauth.access_token_secret: ' + oauth.access_token_secret);
  57.                 next(oauth);
  58.             }
  59.         }
  60.     );
  61. };
  62.  
  63. Twitter.prototype.postMedia = function (params, error, success) {
  64.     var url = 'https://upload.twitter.com/1.1/media/upload.json';
  65.     this.doPost(url, params, error, success);
  66. };
  67.  
  68. Twitter.prototype.postTweet = function (params, error, success) {
  69.     var path = '/statuses/update.json';
  70.     var url = this.baseUrl + path;
  71.     this.doPost(url, params, error, success);
  72. };
  73.  
  74. Twitter.prototype.postFavoritesCreate = function (params, error, success) {
  75.     var path = '/favorites/create.json';
  76.     var url = this.baseUrl + path;
  77.     this.doPost(url, params, error, success);
  78. };
  79.  
  80. Twitter.prototype.postCreateFriendship = function (params, error, success) {
  81.     var path = '/friendships/create.json';
  82.     var url = this.baseUrl + path;
  83.     this.doPost(url, params, error, success);
  84. };
  85.  
  86. Twitter.prototype.getUserTimeline = function (params, error, success) {
  87.     var path = '/statuses/user_timeline.json' + this.buildQS(params);
  88.     var url = this.baseUrl + path;
  89.     this.doRequest(url, error, success);
  90. };
  91.  
  92. Twitter.prototype.getMentionsTimeline = function (params, error, success) {
  93.     var path = '/statuses/mentions_timeline.json' + this.buildQS(params);
  94.     var url = this.baseUrl + path;
  95.     this.doRequest(url, error, success);
  96. };
  97.  
  98. Twitter.prototype.getHomeTimeline = function (params, error, success) {
  99.     var path = '/statuses/home_timeline.json' + this.buildQS(params);
  100.     var url = this.baseUrl + path;
  101.     this.doRequest(url, error, success);
  102. };
  103.  
  104. Twitter.prototype.getFavorites = function (params, error, success) {
  105.     var path = '/favorites/list.json' + this.buildQS(params);
  106.     var url = this.baseUrl + path;
  107.     this.doRequest(url, error, success);
  108. };
  109.  
  110. Twitter.prototype.getReTweetsOfMe = function (params, error, success) {
  111.     var path = '/statuses/retweets_of_me.json' + this.buildQS(params);
  112.     var url = this.baseUrl + path;
  113.     this.doRequest(url, error, success);
  114. };
  115.  
  116. Twitter.prototype.getTweet = function (params, error, success) {
  117.     var path = '/statuses/show.json' + this.buildQS(params);
  118.     var url = this.baseUrl + path;
  119.     this.doRequest(url, error, success);
  120. };
  121.  
  122. Twitter.prototype.getSearch = function (params, error, success) {
  123.     var encodedQuery = encodeURIComponent(params.q);
  124.     delete params.q;
  125.     var path = '/search/tweets.json?q=' + encodedQuery +'&'+ qs.stringify(params);
  126.     var url = this.baseUrl + path;
  127.     this.doRequest(url, error, success);
  128. };
  129.  
  130. //molina code
  131. Twitter.prototype.getUser = function (params, error, success) {
  132.     var path = '/users/show.json' + this.buildQS(params);
  133.     var url = this.baseUrl + path;
  134.     this.doRequest(url, error, success);
  135. };
  136.  
  137. Twitter.prototype.getFollowersList = function (params, error, success) {
  138.     var path = '/followers/list.json' + this.buildQS(params);
  139.     var url = this.baseUrl + path;
  140.     this.doRequest(url, error, success);
  141. };
  142.  
  143. Twitter.prototype.getFollowersIds = function (params, error, success) {
  144.     var path = '/followers/ids.json' + this.buildQS(params);
  145.     var url = this.baseUrl + path;
  146.     this.doRequest(url, error, success);
  147. };
  148.  
  149. Twitter.prototype.getCustomApiCall = function (url, params, error, success) {
  150.     var path =  url + this.buildQS(params);
  151.     var url = this.baseUrl + path;
  152.     this.doRequest(url, error, success);
  153. };
  154.  
  155. Twitter.prototype.postCustomApiCall = function (url, params, error, success) {
  156.     var path =  url + this.buildQS(params);
  157.     var url = this.baseUrl + path;
  158.     this.doPost(url, params, error, success);
  159. };
  160.  
  161. Twitter.prototype.doRequest = function (url, error, success) {
  162.     // Fix the mismatch between OAuth's  RFC3986's and Javascript's beliefs in what is right and wrong ;)
  163.     // From https://github.com/ttezel/twit/blob/master/lib/oarequest.js
  164.     url = url.replace(/\!/g, "%21")
  165.         .replace(/\'/g, "%27")
  166.         .replace(/\(/g, "%28")
  167.         .replace(/\)/g, "%29")
  168.         .replace(/\*/g, "%2A");
  169.  
  170.     this.oauth.get(url, this.accessToken, this.accessTokenSecret, function (err, body, response) {
  171.         console.log('URL [%s]', url);
  172.         if (!err && response.statusCode == 200) {
  173.             limits = {
  174.                 "x-rate-limit-limit": response.headers['x-rate-limit-limit'],
  175.                 "x-rate-limit-remaining": response.headers['x-rate-limit-remaining'],
  176.                 "x-rate-limit-reset": response.headers['x-rate-limit-reset'],
  177.             };
  178.             success(body, limits);
  179.         } else {
  180.             error(err, response, body);
  181.         }
  182.     });
  183. };
  184.  
  185. Twitter.prototype.doPost = function (url, post_body, error, success) {
  186.     // Fix the mismatch between OAuth's  RFC3986's and Javascript's beliefs in what is right and wrong ;)
  187.     // From https://github.com/ttezel/twit/blob/master/lib/oarequest.js
  188.     url = url.replace(/\!/g, "%21")
  189.         .replace(/\'/g, "%27")
  190.         .replace(/\(/g, "%28")
  191.         .replace(/\)/g, "%29")
  192.         .replace(/\*/g, "%2A");
  193.     //(url, oauth_token, oauth_token_secret, post_body, post_content_type, callback
  194.     this.oauth.post(url, this.accessToken, this.accessTokenSecret, post_body, "application/x-www-form-urlencoded", function (err, body, response) {
  195.         console.log('URL [%s]', url);
  196.         if (!err && response.statusCode == 200) {
  197.             success(body);
  198.         } else {
  199.             error(err, response, body);
  200.         }
  201.     });
  202. };
  203.  
  204. Twitter.prototype.buildQS = function (params) {
  205.     if (params && Object.keys(params).length > 0) {
  206.         return '?' + qs.stringify(params);
  207.     }
  208.     return '';
  209. };
  210.  
  211. if (!typeof exports !== 'undefined') {
  212.     exports.Twitter = Twitter;
  213. }else{
  214.     window.Twitter = Twitter;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement