twitter-lite
Advanced tools
Comparing version 0.11.0 to 0.12.0
@@ -1,2 +0,2 @@ | ||
var e=require("crypto"),t=require("oauth-1.0a"),r=require("cross-fetch"),n=require("querystring"),s=require("./stream"),o=function(e,t){return void 0===t&&(t="1.1"),"https://"+e+".twitter.com/"+t},a={subdomain:"api",consumer_key:null,consumer_secret:null,access_token_key:null,access_token_secret:null,bearer_token:null,version:"1.1"},i=["direct_messages/events/new","direct_messages/welcome_messages/new","direct_messages/welcome_messages/rules/new","media/metadata/create"],u={"Content-Type":"application/json",Accept:"application/json"};function c(e){return e.replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")}var h=function(r){var n,s=Object.assign({},a,r);this.authType=s.bearer_token?"App":"User",this.client=t({consumer:{key:(n={key:s.consumer_key,secret:s.consumer_secret}).key,secret:n.secret},signature_method:"HMAC-SHA1",hash_function:function(t,r){return e.createHmac("sha1",r).update(t).digest("base64")}}),this.token={key:s.access_token_key,secret:s.access_token_secret},this.url=o(s.subdomain,s.version),this.oauth=o(s.subdomain,"oauth"),this.config=s};h._handleResponse=function(e){try{if(e.ok){var t=e.headers;return 204===e.status||"0"===e.headers.get("content-length")?Promise.resolve({_headers:t}):Promise.resolve(e.json().then(function(e){return e._headers=t,e}))}return Promise.resolve(e.json()).then(function(e){throw e})}catch(e){return Promise.reject(e)}},h._handleResponseTextOrJson=function(e){try{return Promise.resolve(e.text()).then(function(t){if(e.ok)return n.parse(t);var r;try{r=JSON.parse(t)}catch(e){r=t}return Promise.reject(r)})}catch(e){return Promise.reject(e)}},h.prototype.getBearerToken=function(){try{var e={Authorization:"Basic "+Buffer.from(this.config.consumer_key+":"+this.config.consumer_secret).toString("base64"),"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"};return Promise.resolve(r("https://api.twitter.com/oauth2/token",{method:"POST",body:"grant_type=client_credentials",headers:e}).then(h._handleResponse))}catch(e){return Promise.reject(e)}},h.prototype.getRequestToken=function(e){try{var t={url:this.oauth+"/request_token",method:"POST"},s={};e&&(s={oauth_callback:e}),s&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t,{}));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype.getAccessToken=function(e){try{var t={url:this.oauth+"/access_token",method:"POST"},s={oauth_verifier:e.oauth_verifier,oauth_token:e.oauth_token};s.oauth_verifier&&s.oauth_token&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype._makeRequest=function(e,t,r){var s={url:this.url+"/"+t+".json",method:e};return r&&("POST"===e?s.data=r:s.url+="?"+n.stringify(r)),{requestData:s,headers:"User"===this.authType?this.client.toHeader(this.client.authorize(s,this.token)):{Authorization:"Bearer "+this.config.bearer_token}}},h.prototype.get=function(e,t){var n=this._makeRequest("GET",e,t);return r(n.requestData.url,{headers:n.headers}).then(h._handleResponse)},h.prototype.post=function(e,t){var s=this._makeRequest("POST",e,i.includes(e)?null:t),o=s.requestData,a=Object.assign({},u,s.headers);return i.includes(e)?t=JSON.stringify(t):(t=c(n.stringify(t)),a["Content-Type"]="application/x-www-form-urlencoded"),r(o.url,{method:"POST",headers:a,body:t}).then(h._handleResponse)},h.prototype.put=function(e,t,n){var s=this._makeRequest("PUT",e,t),o=s.requestData,a=Object.assign({},u,s.headers);return n=JSON.stringify(n),r(o.url,{method:"PUT",headers:a,body:n}).then(h._handleResponse)},h.prototype.stream=function(e,t){var a=this;if("User"!==this.authType)throw new Error("Streams require user context authentication");var i=new s,u={url:o("stream")+"/"+e+".json",method:"POST"};t&&(u.data=t);var h=this.client.toHeader(this.client.authorize(u,this.token));return r(u.url,{method:"POST",headers:Object.assign({},h,{"Content-Type":"application/x-www-form-urlencoded"}),body:c(n.stringify(t))}).then(function(e){i.destroy=a.stream.destroy=function(){return e.body.destroy()},e.ok?i.emit("start",e):(e._headers=e.headers,i.emit("error",e)),e.body.on("data",function(e){return i.parse(e)}).on("error",function(e){return i.emit("error",e)}).on("end",function(){return i.emit("end",e)})}).catch(function(e){return i.emit("error",e)}),i},module.exports=h; | ||
var e=require("crypto"),t=require("oauth-1.0a"),r=require("cross-fetch"),n=require("querystring"),s=require("./stream"),o=function(e,t){return void 0===t&&(t="1.1"),"https://"+e+".twitter.com/"+t},a={subdomain:"api",consumer_key:null,consumer_secret:null,access_token_key:null,access_token_secret:null,bearer_token:null,version:"1.1"},i=["direct_messages/events/new","direct_messages/welcome_messages/new","direct_messages/welcome_messages/rules/new","media/metadata/create","collections/entries/curate"],u={"Content-Type":"application/json",Accept:"application/json"};function c(e){return e.replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")}var h=function(r){var n,s=Object.assign({},a,r);this.authType=s.bearer_token?"App":"User",this.client=t({consumer:{key:(n={key:s.consumer_key,secret:s.consumer_secret}).key,secret:n.secret},signature_method:"HMAC-SHA1",hash_function:function(t,r){return e.createHmac("sha1",r).update(t).digest("base64")}}),this.token={key:s.access_token_key,secret:s.access_token_secret},this.url=o(s.subdomain,s.version),this.oauth=o(s.subdomain,"oauth"),this.config=s};h._handleResponse=function(e){try{var t=e.headers;return e.ok?204===e.status||"0"===e.headers.get("content-length")?Promise.resolve({_headers:t}):Promise.resolve(e.json().then(function(e){return e._headers=t,e})):Promise.resolve(e.json()).then(function(e){throw Object.assign({},{_headers:t},e)})}catch(e){return Promise.reject(e)}},h._handleResponseTextOrJson=function(e){try{return Promise.resolve(e.text()).then(function(t){if(e.ok)return n.parse(t);var r;try{r=JSON.parse(t)}catch(e){r=t}return Promise.reject(r)})}catch(e){return Promise.reject(e)}},h.prototype.getBearerToken=function(){try{var e={Authorization:"Basic "+Buffer.from(this.config.consumer_key+":"+this.config.consumer_secret).toString("base64"),"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"};return Promise.resolve(r("https://api.twitter.com/oauth2/token",{method:"POST",body:"grant_type=client_credentials",headers:e}).then(h._handleResponse))}catch(e){return Promise.reject(e)}},h.prototype.getRequestToken=function(e){try{var t={url:this.oauth+"/request_token",method:"POST"},s={};e&&(s={oauth_callback:e}),s&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t,{}));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype.getAccessToken=function(e){try{var t={url:this.oauth+"/access_token",method:"POST"},s={oauth_verifier:e.oauth_verifier,oauth_token:e.oauth_token};s.oauth_verifier&&s.oauth_token&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype._makeRequest=function(e,t,r){var s={url:this.url+"/"+t+".json",method:e};return r&&("POST"===e?s.data=r:s.url+="?"+n.stringify(r)),{requestData:s,headers:"User"===this.authType?this.client.toHeader(this.client.authorize(s,this.token)):{Authorization:"Bearer "+this.config.bearer_token}}},h.prototype.get=function(e,t){var n=this._makeRequest("GET",e,t);return r(n.requestData.url,{headers:n.headers}).then(h._handleResponse)},h.prototype.post=function(e,t){var s=this._makeRequest("POST",e,i.includes(e)?null:t),o=s.requestData,a=Object.assign({},u,s.headers);return i.includes(e)?t=JSON.stringify(t):(t=c(n.stringify(t)),a["Content-Type"]="application/x-www-form-urlencoded"),r(o.url,{method:"POST",headers:a,body:t}).then(h._handleResponse)},h.prototype.put=function(e,t,n){var s=this._makeRequest("PUT",e,t),o=s.requestData,a=Object.assign({},u,s.headers);return n=JSON.stringify(n),r(o.url,{method:"PUT",headers:a,body:n}).then(h._handleResponse)},h.prototype.stream=function(e,t){var a=this;if("User"!==this.authType)throw new Error("Streams require user context authentication");var i=new s,u={url:o("stream")+"/"+e+".json",method:"POST"};t&&(u.data=t);var h=this.client.toHeader(this.client.authorize(u,this.token));return r(u.url,{method:"POST",headers:Object.assign({},h,{"Content-Type":"application/x-www-form-urlencoded"}),body:c(n.stringify(t))}).then(function(e){i.destroy=a.stream.destroy=function(){return e.body.destroy()},e.ok?i.emit("start",e):(e._headers=e.headers,i.emit("error",e)),e.body.on("data",function(e){return i.parse(e)}).on("error",function(e){return i.emit("error",e)}).on("end",function(){return i.emit("end",e)})}).catch(function(e){return i.emit("error",e)}),i},module.exports=h; | ||
//# sourceMappingURL=twitter.js.map |
@@ -1,2 +0,2 @@ | ||
var e=require("crypto"),t=require("oauth-1.0a"),r=require("cross-fetch"),n=require("querystring"),s=require("./stream"),o=function(e,t){return void 0===t&&(t="1.1"),"https://"+e+".twitter.com/"+t},a={subdomain:"api",consumer_key:null,consumer_secret:null,access_token_key:null,access_token_secret:null,bearer_token:null,version:"1.1"},i=["direct_messages/events/new","direct_messages/welcome_messages/new","direct_messages/welcome_messages/rules/new","media/metadata/create"],u={"Content-Type":"application/json",Accept:"application/json"};function c(e){return e.replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")}var h=function(r){var n,s=Object.assign({},a,r);this.authType=s.bearer_token?"App":"User",this.client=t({consumer:{key:(n={key:s.consumer_key,secret:s.consumer_secret}).key,secret:n.secret},signature_method:"HMAC-SHA1",hash_function:function(t,r){return e.createHmac("sha1",r).update(t).digest("base64")}}),this.token={key:s.access_token_key,secret:s.access_token_secret},this.url=o(s.subdomain,s.version),this.oauth=o(s.subdomain,"oauth"),this.config=s};h._handleResponse=function(e){try{if(e.ok){var t=e.headers;return 204===e.status||"0"===e.headers.get("content-length")?Promise.resolve({_headers:t}):Promise.resolve(e.json().then(function(e){return e._headers=t,e}))}return Promise.resolve(e.json()).then(function(e){throw e})}catch(e){return Promise.reject(e)}},h._handleResponseTextOrJson=function(e){try{return Promise.resolve(e.text()).then(function(t){if(e.ok)return n.parse(t);var r;try{r=JSON.parse(t)}catch(e){r=t}return Promise.reject(r)})}catch(e){return Promise.reject(e)}},h.prototype.getBearerToken=function(){try{var e={Authorization:"Basic "+Buffer.from(this.config.consumer_key+":"+this.config.consumer_secret).toString("base64"),"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"};return Promise.resolve(r("https://api.twitter.com/oauth2/token",{method:"POST",body:"grant_type=client_credentials",headers:e}).then(h._handleResponse))}catch(e){return Promise.reject(e)}},h.prototype.getRequestToken=function(e){try{var t={url:this.oauth+"/request_token",method:"POST"},s={};e&&(s={oauth_callback:e}),s&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t,{}));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype.getAccessToken=function(e){try{var t={url:this.oauth+"/access_token",method:"POST"},s={oauth_verifier:e.oauth_verifier,oauth_token:e.oauth_token};s.oauth_verifier&&s.oauth_token&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype._makeRequest=function(e,t,r){var s={url:this.url+"/"+t+".json",method:e};return r&&("POST"===e?s.data=r:s.url+="?"+n.stringify(r)),{requestData:s,headers:"User"===this.authType?this.client.toHeader(this.client.authorize(s,this.token)):{Authorization:"Bearer "+this.config.bearer_token}}},h.prototype.get=function(e,t){var n=this._makeRequest("GET",e,t);return r(n.requestData.url,{headers:n.headers}).then(h._handleResponse)},h.prototype.post=function(e,t){var s=this._makeRequest("POST",e,i.includes(e)?null:t),o=s.requestData,a=Object.assign({},u,s.headers);return i.includes(e)?t=JSON.stringify(t):(t=c(n.stringify(t)),a["Content-Type"]="application/x-www-form-urlencoded"),r(o.url,{method:"POST",headers:a,body:t}).then(h._handleResponse)},h.prototype.put=function(e,t,n){var s=this._makeRequest("PUT",e,t),o=s.requestData,a=Object.assign({},u,s.headers);return n=JSON.stringify(n),r(o.url,{method:"PUT",headers:a,body:n}).then(h._handleResponse)},h.prototype.stream=function(e,t){var a=this;if("User"!==this.authType)throw new Error("Streams require user context authentication");var i=new s,u={url:o("stream")+"/"+e+".json",method:"POST"};t&&(u.data=t);var h=this.client.toHeader(this.client.authorize(u,this.token));return r(u.url,{method:"POST",headers:Object.assign({},h,{"Content-Type":"application/x-www-form-urlencoded"}),body:c(n.stringify(t))}).then(function(e){i.destroy=a.stream.destroy=function(){return e.body.destroy()},e.ok?i.emit("start",e):(e._headers=e.headers,i.emit("error",e)),e.body.on("data",function(e){return i.parse(e)}).on("error",function(e){return i.emit("error",e)}).on("end",function(){return i.emit("end",e)})}).catch(function(e){return i.emit("error",e)}),i},module.exports=h; | ||
var e=require("crypto"),t=require("oauth-1.0a"),r=require("cross-fetch"),n=require("querystring"),s=require("./stream"),o=function(e,t){return void 0===t&&(t="1.1"),"https://"+e+".twitter.com/"+t},a={subdomain:"api",consumer_key:null,consumer_secret:null,access_token_key:null,access_token_secret:null,bearer_token:null,version:"1.1"},i=["direct_messages/events/new","direct_messages/welcome_messages/new","direct_messages/welcome_messages/rules/new","media/metadata/create","collections/entries/curate"],u={"Content-Type":"application/json",Accept:"application/json"};function c(e){return e.replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")}var h=function(r){var n,s=Object.assign({},a,r);this.authType=s.bearer_token?"App":"User",this.client=t({consumer:{key:(n={key:s.consumer_key,secret:s.consumer_secret}).key,secret:n.secret},signature_method:"HMAC-SHA1",hash_function:function(t,r){return e.createHmac("sha1",r).update(t).digest("base64")}}),this.token={key:s.access_token_key,secret:s.access_token_secret},this.url=o(s.subdomain,s.version),this.oauth=o(s.subdomain,"oauth"),this.config=s};h._handleResponse=function(e){try{var t=e.headers;return e.ok?204===e.status||"0"===e.headers.get("content-length")?Promise.resolve({_headers:t}):Promise.resolve(e.json().then(function(e){return e._headers=t,e})):Promise.resolve(e.json()).then(function(e){throw Object.assign({},{_headers:t},e)})}catch(e){return Promise.reject(e)}},h._handleResponseTextOrJson=function(e){try{return Promise.resolve(e.text()).then(function(t){if(e.ok)return n.parse(t);var r;try{r=JSON.parse(t)}catch(e){r=t}return Promise.reject(r)})}catch(e){return Promise.reject(e)}},h.prototype.getBearerToken=function(){try{var e={Authorization:"Basic "+Buffer.from(this.config.consumer_key+":"+this.config.consumer_secret).toString("base64"),"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"};return Promise.resolve(r("https://api.twitter.com/oauth2/token",{method:"POST",body:"grant_type=client_credentials",headers:e}).then(h._handleResponse))}catch(e){return Promise.reject(e)}},h.prototype.getRequestToken=function(e){try{var t={url:this.oauth+"/request_token",method:"POST"},s={};e&&(s={oauth_callback:e}),s&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t,{}));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype.getAccessToken=function(e){try{var t={url:this.oauth+"/access_token",method:"POST"},s={oauth_verifier:e.oauth_verifier,oauth_token:e.oauth_token};s.oauth_verifier&&s.oauth_token&&(t.url+="?"+n.stringify(s));var o=this.client.toHeader(this.client.authorize(t));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,o)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype._makeRequest=function(e,t,r){var s={url:this.url+"/"+t+".json",method:e};return r&&("POST"===e?s.data=r:s.url+="?"+n.stringify(r)),{requestData:s,headers:"User"===this.authType?this.client.toHeader(this.client.authorize(s,this.token)):{Authorization:"Bearer "+this.config.bearer_token}}},h.prototype.get=function(e,t){var n=this._makeRequest("GET",e,t);return r(n.requestData.url,{headers:n.headers}).then(h._handleResponse)},h.prototype.post=function(e,t){var s=this._makeRequest("POST",e,i.includes(e)?null:t),o=s.requestData,a=Object.assign({},u,s.headers);return i.includes(e)?t=JSON.stringify(t):(t=c(n.stringify(t)),a["Content-Type"]="application/x-www-form-urlencoded"),r(o.url,{method:"POST",headers:a,body:t}).then(h._handleResponse)},h.prototype.put=function(e,t,n){var s=this._makeRequest("PUT",e,t),o=s.requestData,a=Object.assign({},u,s.headers);return n=JSON.stringify(n),r(o.url,{method:"PUT",headers:a,body:n}).then(h._handleResponse)},h.prototype.stream=function(e,t){var a=this;if("User"!==this.authType)throw new Error("Streams require user context authentication");var i=new s,u={url:o("stream")+"/"+e+".json",method:"POST"};t&&(u.data=t);var h=this.client.toHeader(this.client.authorize(u,this.token));return r(u.url,{method:"POST",headers:Object.assign({},h,{"Content-Type":"application/x-www-form-urlencoded"}),body:c(n.stringify(t))}).then(function(e){i.destroy=a.stream.destroy=function(){return e.body.destroy()},e.ok?i.emit("start",e):(e._headers=e.headers,i.emit("error",e)),e.body.on("data",function(e){return i.parse(e)}).on("error",function(e){return i.emit("error",e)}).on("end",function(){return i.emit("end",e)})}).catch(function(e){return i.emit("error",e)}),i},module.exports=h; | ||
//# sourceMappingURL=twitter.m.js.map |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(0,function(){var e=require("crypto"),t=require("oauth-1.0a"),r=require("cross-fetch"),n=require("querystring"),o=require("./stream"),s=function(e,t){return void 0===t&&(t="1.1"),"https://"+e+".twitter.com/"+t},i={subdomain:"api",consumer_key:null,consumer_secret:null,access_token_key:null,access_token_secret:null,bearer_token:null,version:"1.1"},a=["direct_messages/events/new","direct_messages/welcome_messages/new","direct_messages/welcome_messages/rules/new","media/metadata/create"],u={"Content-Type":"application/json",Accept:"application/json"};function c(e){return e.replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")}var h=function(r){var n,o=Object.assign({},i,r);this.authType=o.bearer_token?"App":"User",this.client=t({consumer:{key:(n={key:o.consumer_key,secret:o.consumer_secret}).key,secret:n.secret},signature_method:"HMAC-SHA1",hash_function:function(t,r){return e.createHmac("sha1",r).update(t).digest("base64")}}),this.token={key:o.access_token_key,secret:o.access_token_secret},this.url=s(o.subdomain,o.version),this.oauth=s(o.subdomain,"oauth"),this.config=o};h._handleResponse=function(e){try{if(e.ok){var t=e.headers;return 204===e.status||"0"===e.headers.get("content-length")?Promise.resolve({_headers:t}):Promise.resolve(e.json().then(function(e){return e._headers=t,e}))}return Promise.resolve(e.json()).then(function(e){throw e})}catch(e){return Promise.reject(e)}},h._handleResponseTextOrJson=function(e){try{return Promise.resolve(e.text()).then(function(t){if(e.ok)return n.parse(t);var r;try{r=JSON.parse(t)}catch(e){r=t}return Promise.reject(r)})}catch(e){return Promise.reject(e)}},h.prototype.getBearerToken=function(){try{var e={Authorization:"Basic "+Buffer.from(this.config.consumer_key+":"+this.config.consumer_secret).toString("base64"),"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"};return Promise.resolve(r("https://api.twitter.com/oauth2/token",{method:"POST",body:"grant_type=client_credentials",headers:e}).then(h._handleResponse))}catch(e){return Promise.reject(e)}},h.prototype.getRequestToken=function(e){try{var t={url:this.oauth+"/request_token",method:"POST"},o={};e&&(o={oauth_callback:e}),o&&(t.url+="?"+n.stringify(o));var s=this.client.toHeader(this.client.authorize(t,{}));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,s)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype.getAccessToken=function(e){try{var t={url:this.oauth+"/access_token",method:"POST"},o={oauth_verifier:e.oauth_verifier,oauth_token:e.oauth_token};o.oauth_verifier&&o.oauth_token&&(t.url+="?"+n.stringify(o));var s=this.client.toHeader(this.client.authorize(t));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,s)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype._makeRequest=function(e,t,r){var o={url:this.url+"/"+t+".json",method:e};return r&&("POST"===e?o.data=r:o.url+="?"+n.stringify(r)),{requestData:o,headers:"User"===this.authType?this.client.toHeader(this.client.authorize(o,this.token)):{Authorization:"Bearer "+this.config.bearer_token}}},h.prototype.get=function(e,t){var n=this._makeRequest("GET",e,t);return r(n.requestData.url,{headers:n.headers}).then(h._handleResponse)},h.prototype.post=function(e,t){var o=this._makeRequest("POST",e,a.includes(e)?null:t),s=o.requestData,i=Object.assign({},u,o.headers);return a.includes(e)?t=JSON.stringify(t):(t=c(n.stringify(t)),i["Content-Type"]="application/x-www-form-urlencoded"),r(s.url,{method:"POST",headers:i,body:t}).then(h._handleResponse)},h.prototype.put=function(e,t,n){var o=this._makeRequest("PUT",e,t),s=o.requestData,i=Object.assign({},u,o.headers);return n=JSON.stringify(n),r(s.url,{method:"PUT",headers:i,body:n}).then(h._handleResponse)},h.prototype.stream=function(e,t){var i=this;if("User"!==this.authType)throw new Error("Streams require user context authentication");var a=new o,u={url:s("stream")+"/"+e+".json",method:"POST"};t&&(u.data=t);var h=this.client.toHeader(this.client.authorize(u,this.token));return r(u.url,{method:"POST",headers:Object.assign({},h,{"Content-Type":"application/x-www-form-urlencoded"}),body:c(n.stringify(t))}).then(function(e){a.destroy=i.stream.destroy=function(){return e.body.destroy()},e.ok?a.emit("start",e):(e._headers=e.headers,a.emit("error",e)),e.body.on("data",function(e){return a.parse(e)}).on("error",function(e){return a.emit("error",e)}).on("end",function(){return a.emit("end",e)})}).catch(function(e){return a.emit("error",e)}),a},module.exports=h}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(0,function(){var e=require("crypto"),t=require("oauth-1.0a"),r=require("cross-fetch"),n=require("querystring"),o=require("./stream"),s=function(e,t){return void 0===t&&(t="1.1"),"https://"+e+".twitter.com/"+t},a={subdomain:"api",consumer_key:null,consumer_secret:null,access_token_key:null,access_token_secret:null,bearer_token:null,version:"1.1"},i=["direct_messages/events/new","direct_messages/welcome_messages/new","direct_messages/welcome_messages/rules/new","media/metadata/create","collections/entries/curate"],u={"Content-Type":"application/json",Accept:"application/json"};function c(e){return e.replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")}var h=function(r){var n,o=Object.assign({},a,r);this.authType=o.bearer_token?"App":"User",this.client=t({consumer:{key:(n={key:o.consumer_key,secret:o.consumer_secret}).key,secret:n.secret},signature_method:"HMAC-SHA1",hash_function:function(t,r){return e.createHmac("sha1",r).update(t).digest("base64")}}),this.token={key:o.access_token_key,secret:o.access_token_secret},this.url=s(o.subdomain,o.version),this.oauth=s(o.subdomain,"oauth"),this.config=o};h._handleResponse=function(e){try{var t=e.headers;return e.ok?204===e.status||"0"===e.headers.get("content-length")?Promise.resolve({_headers:t}):Promise.resolve(e.json().then(function(e){return e._headers=t,e})):Promise.resolve(e.json()).then(function(e){throw Object.assign({},{_headers:t},e)})}catch(e){return Promise.reject(e)}},h._handleResponseTextOrJson=function(e){try{return Promise.resolve(e.text()).then(function(t){if(e.ok)return n.parse(t);var r;try{r=JSON.parse(t)}catch(e){r=t}return Promise.reject(r)})}catch(e){return Promise.reject(e)}},h.prototype.getBearerToken=function(){try{var e={Authorization:"Basic "+Buffer.from(this.config.consumer_key+":"+this.config.consumer_secret).toString("base64"),"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"};return Promise.resolve(r("https://api.twitter.com/oauth2/token",{method:"POST",body:"grant_type=client_credentials",headers:e}).then(h._handleResponse))}catch(e){return Promise.reject(e)}},h.prototype.getRequestToken=function(e){try{var t={url:this.oauth+"/request_token",method:"POST"},o={};e&&(o={oauth_callback:e}),o&&(t.url+="?"+n.stringify(o));var s=this.client.toHeader(this.client.authorize(t,{}));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,s)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype.getAccessToken=function(e){try{var t={url:this.oauth+"/access_token",method:"POST"},o={oauth_verifier:e.oauth_verifier,oauth_token:e.oauth_token};o.oauth_verifier&&o.oauth_token&&(t.url+="?"+n.stringify(o));var s=this.client.toHeader(this.client.authorize(t));return Promise.resolve(r(t.url,{method:"POST",headers:Object.assign({},u,s)}).then(h._handleResponseTextOrJson))}catch(e){return Promise.reject(e)}},h.prototype._makeRequest=function(e,t,r){var o={url:this.url+"/"+t+".json",method:e};return r&&("POST"===e?o.data=r:o.url+="?"+n.stringify(r)),{requestData:o,headers:"User"===this.authType?this.client.toHeader(this.client.authorize(o,this.token)):{Authorization:"Bearer "+this.config.bearer_token}}},h.prototype.get=function(e,t){var n=this._makeRequest("GET",e,t);return r(n.requestData.url,{headers:n.headers}).then(h._handleResponse)},h.prototype.post=function(e,t){var o=this._makeRequest("POST",e,i.includes(e)?null:t),s=o.requestData,a=Object.assign({},u,o.headers);return i.includes(e)?t=JSON.stringify(t):(t=c(n.stringify(t)),a["Content-Type"]="application/x-www-form-urlencoded"),r(s.url,{method:"POST",headers:a,body:t}).then(h._handleResponse)},h.prototype.put=function(e,t,n){var o=this._makeRequest("PUT",e,t),s=o.requestData,a=Object.assign({},u,o.headers);return n=JSON.stringify(n),r(s.url,{method:"PUT",headers:a,body:n}).then(h._handleResponse)},h.prototype.stream=function(e,t){var a=this;if("User"!==this.authType)throw new Error("Streams require user context authentication");var i=new o,u={url:s("stream")+"/"+e+".json",method:"POST"};t&&(u.data=t);var h=this.client.toHeader(this.client.authorize(u,this.token));return r(u.url,{method:"POST",headers:Object.assign({},h,{"Content-Type":"application/x-www-form-urlencoded"}),body:c(n.stringify(t))}).then(function(e){i.destroy=a.stream.destroy=function(){return e.body.destroy()},e.ok?i.emit("start",e):(e._headers=e.headers,i.emit("error",e)),e.body.on("data",function(e){return i.parse(e)}).on("error",function(e){return i.emit("error",e)}).on("end",function(){return i.emit("end",e)})}).catch(function(e){return i.emit("error",e)}),i},module.exports=h}); | ||
//# sourceMappingURL=twitter.umd.js.map |
@@ -1,7 +0,7 @@ | ||
/** | ||
* Typings for twitter-lite | ||
* | ||
/** | ||
* Typings for twitter-lite | ||
* | ||
* @version 0.10-1.0 | ||
* @author Floris de Bijl <@fdebijl> | ||
* | ||
* | ||
* @example | ||
@@ -16,3 +16,3 @@ * const Twitter = require('twitter-lite') | ||
* }); | ||
* | ||
* | ||
* @example | ||
@@ -37,8 +37,8 @@ * // Enable esModuleInterop in your tsconfig to import typings | ||
export default class Twitter { | ||
#authType: AuthType; | ||
#url: string; | ||
#oauth: string; | ||
#config: TwitterOptions; | ||
#client: OAuth; | ||
#token: KeySecret; | ||
private authType: AuthType; | ||
private url: string; | ||
private oauth: string; | ||
private config: TwitterOptions; | ||
private client: OAuth; | ||
private token: KeySecret; | ||
@@ -64,5 +64,11 @@ constructor(options: TwitterOptions); | ||
*/ | ||
private _makeRequest(method: 'GET' | 'POST' | 'PUT', resource: string, parameters: object): { requestData: { url: string; method: string; }; headers: ({ Authorization: string; } | OAuth.Header); }; | ||
private _makeRequest( | ||
method: 'GET' | 'POST' | 'PUT', | ||
resource: string, | ||
parameters: object | ||
): { | ||
requestData: { url: string; method: string }; | ||
headers: { Authorization: string } | OAuth.Header; | ||
}; | ||
/** | ||
@@ -87,17 +93,21 @@ * Send a GET request | ||
*/ | ||
public post<T = any>(resource: string, body: object): Promise<T> | ||
public post<T = any>(resource: string, body: object): Promise<T>; | ||
/** | ||
* Send a PUT request | ||
* Send a PUT request | ||
* @type {T = any} Expected type for the response from this request, generally `object` or `array`. | ||
* @param {string} resource - endpoint e.g. `direct_messages/welcome_messages/update` | ||
* @param {object} parameters - required or optional query parameters | ||
* @param {object} body - PUT request body | ||
* @param {object} body - PUT request body | ||
* @returns {Promise<any>} Promise resolving to the response from the Twitter API. | ||
*/ | ||
public put<T = any>(resource: string, parameters: object, body: object): Promise<T> | ||
public put<T = any>( | ||
resource: string, | ||
parameters: object, | ||
body: object | ||
): Promise<T>; | ||
/** | ||
* Open a stream to a specified endpoint | ||
* | ||
* | ||
* @param {string} resource - endpoint, e.g. `statuses/filter` | ||
@@ -110,2 +120,6 @@ * @param {object} parameters | ||
/* In reality snowflakes are BigInts. Once BigInt is supported by browsers and Node per default, we could adjust this type. | ||
Currently Twitter themselves convert it to strings for the API though, so this change will come some time in the far future. */ | ||
type snowflake = string; | ||
interface TwitterOptions { | ||
@@ -147,12 +161,17 @@ /** "api" is the default (change for other subdomains) */ | ||
interface TokenResponse { | ||
oauth_token: OauthToken; | ||
oauth_token_secret: OauthTokenSecret; | ||
} | ||
type TokenResponse = | ||
| { | ||
oauth_token: OauthToken; | ||
oauth_token_secret: OauthTokenSecret; | ||
oauth_callback_confirmed: true; | ||
} | ||
| { oauth_callback_confirmed: false }; | ||
interface AccessTokenResponse extends TokenResponse { | ||
user_id: number; | ||
interface AccessTokenResponse { | ||
oauth_token: string; | ||
oauth_token_secret: string; | ||
user_id: snowflake; | ||
screen_name: string; | ||
} | ||
declare class Stream extends EventEmitter { | ||
@@ -162,2 +181,3 @@ constructor(); | ||
parse(buffer: Buffer): void; | ||
} | ||
destroy(): void; | ||
} |
{ | ||
"name": "twitter-lite", | ||
"version": "0.11.0", | ||
"version": "0.12.0", | ||
"description": "Tiny, full-featured client/server REST/stream library for the Twitter API", | ||
@@ -35,11 +35,11 @@ "source": "twitter.js", | ||
"devDependencies": { | ||
"@types/jest": "^23.3.10", | ||
"@types/node": "^13.7.4", | ||
"@types/jest": "^25.2.1", | ||
"@types/node": "^13.13.4", | ||
"bundlesize": "^0.18.0", | ||
"dotenv": "^6.2.0", | ||
"eslint": "^5.15.3", | ||
"eslint-plugin-jest": "^22.4.1", | ||
"flow-bin": "^0.68.0", | ||
"husky": "^1.3.1", | ||
"jest": "^23.6.0", | ||
"dotenv": "^8.2.0", | ||
"eslint": "^6.8.0", | ||
"eslint-plugin-jest": "^23.8.2", | ||
"flow-bin": "^0.123.0", | ||
"husky": "^4.2.5", | ||
"jest": "^25.5.0", | ||
"microbundle": "^0.11.0", | ||
@@ -49,6 +49,6 @@ "typescript": "^3.8.2" | ||
"scripts": { | ||
"lint": "eslint ./", | ||
"lint": "eslint --fix ./", | ||
"prepare": "microbundle {stream,twitter}.js && bundlesize", | ||
"test": "eslint . && jest --detectOpenHandles", | ||
"release": "npm run -s prepare && npm test && git tag $npm_package_version && git push && git push --tags && npm publish" | ||
"test": "eslint --fix . && jest --detectOpenHandles", | ||
"release": "npm run -s prepare && git tag $npm_package_version && git push && git push --tags && npm publish" | ||
}, | ||
@@ -55,0 +55,0 @@ "husky": { |
@@ -323,5 +323,14 @@ # Twitter Lite | ||
### Headers on success | ||
```es6 | ||
const tweets = await client.get("statuses/home_timeline"); | ||
console.log(`Rate: ${tweets._headers.get('x-rate-limit-remaining')} / ${tweets._headers.get('x-rate-limit-limit')}`); | ||
const delta = (tweets._headers.get('x-rate-limit-reset') * 1000) - Date.now() | ||
console.log(`Reset: ${Math.ceil(delta / 1000 / 60)} minutes`); | ||
``` | ||
### API errors | ||
`.get` and `.post` reject on error, so you can use try/catch to handle errors. The error object contains an `errors` property with the error `code` and `message`, and a `_headers` property with the the HTTP response code and [Headers](https://developer.twitter.com/en/docs/basics/rate-limiting.html) object returned by the Twitter API. Note that each `_headers` property is an array, usually of length 1. | ||
`.get` and `.post` reject on error, so you can use try/catch to handle errors. The error object contains an `errors` property with the error `code` and `message`, and a `_headers` property with the the HTTP response code and [Headers](https://developer.twitter.com/en/docs/basics/rate-limiting.html) object returned by the Twitter API. | ||
@@ -337,3 +346,3 @@ ```es6 | ||
// rate limit exceeded | ||
console.log("Rate limit will reset on", new Date(e._headers["x-rate-limit-reset"] * 1000)); | ||
console.log("Rate limit will reset on", new Date(e._headers.get("x-rate-limit-reset") * 1000)); | ||
else | ||
@@ -340,0 +349,0 @@ // some other kind of error, e.g. read-only API trying to POST |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
96392
345
401
0