1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | 13x 13x 13x 9x 9x 9x 9x 4x 1x 1x 4x 4x 1x 1x 4x 4x 1x 1x 4x | import isFunction from 'lodash.isfunction'; import Core from '../core/core'; /** * @class Twitter * @description Twitter class * @example * const twitter = new Twitter({ * consumerKey: 'your-app-consumer-key', * consumerSecret: 'your-app-consumer-secret', * accessToken: 'your-app-access-token', * accessTokenSecret: 'your-app-access-token-secret', * }); * * twitter.get('some-twitter-route').then((data) => { * console.log(data); * }); */ class Twitter extends Core { /** * @constructs Twitter * @description Constructs an instance of Twitter. * * @param {object} config - Config of class. * @param {string} config.consumerKey - consumerKey of Twitter app. * @param {string} config.consumerSecret - consumerSecret of Twitter app. * @param {string} config.accessToken - accessToken of Twitter app. * @param {string} config.accessTokenSecret - accessTokenSecret of Twitter app. * @param {object} [options] - Options of class. * */ constructor(config = {}, options = {}) { super(options); this.name = 'twitter'; this.checkValidConfig( ['consumerKey', 'consumerSecret', 'accessToken', 'accessTokenSecret'], config ); this.oauth = { consumer_key: config.consumerKey, consumer_secret: config.consumerSecret, token: config.accessToken, token_secret: config.accessTokenSecret, }; this.url = 'https://api.twitter.com'; this.version = options.version || '1.1'; this.baseApiUrl = `${this.url}/${this.version}`; } /** * @memberof Twitter * @function get * @description Make a get request to twitter api. * * @param {string} url - Url of route. * @param {object} [options] - Options to pass in request. * @param {function} [callback] - Callback to call when the request finish. * @return {promise} */ get(url, options = {}, callback) { if (isFunction(options)) { callback = options; options = {}; } return this.request({ method: 'GET', json: true, uri: `${this.baseApiUrl}/${url}.json`, oauth: this.oauth, qs: options, }, callback); } /** * @memberof Twitter * @function post * @description Make a post request to twitter api. * * @param {string} url - Url of route. * @param {object} [options] - Options to pass in request. * @param {function} [callback] - Callback to call when the request finish. * @return {promise} */ post(url, options = {}, callback) { if (isFunction(options)) { callback = options; options = {}; } return this.request({ method: 'POST', json: true, uri: `${this.baseApiUrl}/${url}.json`, oauth: this.oauth, form: options, }, callback); } /** * @memberof Twitter * @function delete * @description Make a get request to twitter api. * * @param {string} url - Url of route. * @param {object} [options] - Options to pass in request. * @param {function} [callback] - Callback to call when the request finish. * @return {promise} */ delete(url, options = {}, callback) { if (isFunction(options)) { callback = options; options = {}; } return this.request({ method: 'DELETE', json: true, uri: `${this.baseApiUrl}/${url}.json`, oauth: this.oauth, qs: options, }, callback); } } export default Twitter; |