{"_id":"@cagen/x_client","_rev":"2-74b96ead02485402fd781b29554b8adf","name":"@cagen/x_client","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.0":{"name":"@cagen/x_client","version":"0.0.0","author":"","license":"ISC","_id":"@cagen/x_client@0.0.0","maintainers":[{"name":"cagen","email":"alex.wyett@gmail.com"}],"dist":{"shasum":"e423d112d783c7776d5387de05cd0a51cf4b72ed","tarball":"https://registry.npmjs.org/@cagen/x_client/-/x_client-0.0.0.tgz","fileCount":20,"integrity":"sha512-n6sxYm446pqDLLCDAAnjzCODwU5kice0ZXNAmaoAgniFjpKvYsRv78apQMNZwoALvJCwiVUZOUnx3aUOXhcybA==","signatures":[{"sig":"MEUCIB1zUru9M3OvcqDZQJiRMwLztiZ4P08yxUOrI9jrwgueAiEA6rQpV6xD/a35tiYBVDvnSmWySsSDYhQJ+IbuQk4RaBc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24677},"main":"src/index.js","gitHead":"5feffafeb2e8feafadd388b7c09f77a2e024add3","scripts":{"test":"node --test tests"},"_npmUser":{"name":"cagen","email":"alex.wyett@gmail.com"},"_npmVersion":"10.5.2","description":"X/Twitter HTTP Client","directories":{},"_nodeVersion":"20.13.1","dependencies":{"crypto":"^1.0.1","oauth-1.0a":"^2.2.6","cross-fetch":"^4.0.0","querystring":"^0.2.1","oauth-signature":"^1.5.0","get-random-values":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.5"},"_npmOperationalInternal":{"tmp":"tmp/x_client_0.0.0_1722608803345_0.9949152923095939","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"@cagen/x_client","version":"0.0.1","author":"","license":"ISC","_id":"@cagen/x_client@0.0.1","maintainers":[{"name":"cagen","email":"alex.wyett@gmail.com"}],"dist":{"shasum":"46e5cfbfd808d74e028359e7d4ac2e80c8b347c8","tarball":"https://registry.npmjs.org/@cagen/x_client/-/x_client-0.0.1.tgz","fileCount":21,"integrity":"sha512-Cs/WOr1gXFlU9D0St71uCUZZQSdxgGpFYOFSXVlxwZGWNBJFPbLb1v2z3ONtF0kOpe9c6fy7NsqgqhF3PPwn6w==","signatures":[{"sig":"MEUCIEbKaaZchRuB9AcbkrmLzYFRWcg091xutiWAJpCwA+A5AiEApgH72fB9gdowGUXY3LiCgcMhdJLEZDki7skQj9idyBk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25464},"main":"src/index.js","gitHead":"b94c5c3942f4bc5fb76f921571b984d7fcc7461d","scripts":{"test":"node --test tests"},"_npmUser":{"name":"cagen","email":"alex.wyett@gmail.com"},"_npmVersion":"10.5.2","description":"X/Twitter HTTP Client","directories":{},"_nodeVersion":"20.13.1","dependencies":{"crypto":"^1.0.1","oauth-1.0a":"^2.2.6","cross-fetch":"^4.0.0","querystring":"^0.2.1","oauth-signature":"^1.5.0","get-random-values":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.5"},"_npmOperationalInternal":{"tmp":"tmp/x_client_0.0.1_1722611757443_0.7817308095624902","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@cagen/x_client","version":"0.0.2","description":"X/Twitter HTTP Client","main":"src/index.js","scripts":{"test":"node --test tests"},"dependencies":{"cross-fetch":"^4.0.0","crypto":"^1.0.1","get-random-values":"^3.0.0","oauth-1.0a":"^2.2.6","oauth-signature":"^1.5.0","querystring":"^0.2.1"},"author":"","license":"ISC","devDependencies":{"dotenv":"^16.4.5"},"gitHead":"5430cbed7a3deded68a8c075eab9bb47e1a4ed3e","_id":"@cagen/x_client@0.0.2","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-Eu3gVwew2scYjJgwwtkA8gSMR5MTxY5FbM6Vm33Vs361e+Pf4N03nwyEPxtGY5xKj4nFp7PTCEpzqiefXk8wFw==","shasum":"65b066c057e14a65b0e3f0ef15841743d40bb5bc","tarball":"https://registry.npmjs.org/@cagen/x_client/-/x_client-0.0.2.tgz","fileCount":21,"unpackedSize":27418,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF4zYb9liQMTRtCRtWNwtIbswKwXaXPRmxwY4NaC0/KZAiEA5RS7BORq+Me/wJxo3yIg4PLSIMSMB7Km+szExO7xs5E="}]},"_npmUser":{"name":"cagen","email":"alex.wyett@gmail.com"},"directories":{},"maintainers":[{"name":"cagen","email":"alex.wyett@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/x_client_0.0.2_1722948194343_0.2334477045860497"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-02T14:26:43.247Z","modified":"2024-08-06T12:43:14.744Z","0.0.0":"2024-08-02T14:26:43.584Z","0.0.1":"2024-08-02T15:15:57.663Z","0.0.2":"2024-08-06T12:43:14.548Z"},"license":"ISC","description":"X/Twitter HTTP Client","maintainers":[{"name":"cagen","email":"alex.wyett@gmail.com"}],"readme":"# X/Twitter Client\n\nThis is a basic X/Twitter client for node.js applications.\n\n## Installation\nRun `npm i @cagen/x_client` in your application.\n\n## Usage\nThis package provides two clients, V1 and V2 which connect to the respective twitter apis.  To Initialise you can use the following. Note: I have used env variables to provide the client id, secret and bearer token that you must get from the X developers admin site.  The Token and Refresh Token must be obtained from a valid session.\n\n```\nimport { Utils } from '@cagen/x_client';\n\nconst client = Utils.Client.V1({\n  key: process.env.TWITTER_CLIENT_ID,\n  secret: process.env.TWITTER_CLIENT_SECRET,\n  bearer: process.env.TWITTER_BEARER_TOKEN\n})\n```\nYou have access to the clients rest methods which can be used to interact with the api.\n\n```\nconst profile = await client.get(\"account/verify_credentials\")\n```\n\nI have provided some helper methods which do some of the repetive code when performing api actions such as:\n\n### Getting a users profile\n```\nimport { Helpers, Utils } from '@cagen/x_client';\n\nconst clientv1 = Utils.Client.V1({\n  key: process.env.TWITTER_CLIENT_ID,\n  secret: process.env.TWITTER_CLIENT_SECRET,\n  token: process.env.TWITTER_TOKEN,\n  refresh_token: process.env.TWITTER_REFRESH_TOKEN\n})\n\nconst profile = await Helpers.GetProfile(clientv1);\n```\n\n### Retrieving posts\n```\nimport { Helpers, Utils } from '@cagen/x_client';\n\nconst client = Utils.Client.V2({\n  key: process.env.TWITTER_CLIENT_ID,\n  secret: process.env.TWITTER_CLIENT_SECRET,\n  bearer: process.env.TWITTER_BEARER_TOKEN\n})\n\nconst data = await Helpers.GetPostsById(client, ['20']);  \n```\n\n### Creating a Post\n```\nimport { Helpers, Utils } from '@cagen/x_client';\n\nconst clientv1 = Utils.Client.V1({\n  key: process.env.TWITTER_CLIENT_ID,\n  secret: process.env.TWITTER_CLIENT_SECRET,\n  token: process.env.TWITTER_TOKEN,\n  refresh_token: process.env.TWITTER_REFRESH_TOKEN\n})\n\nconst clientv2 = Utils.Client.V2({\n  key: process.env.TWITTER_CLIENT_ID,\n  secret: process.env.TWITTER_CLIENT_SECRET,\n  token: process.env.TWITTER_TOKEN,\n  refresh_token: process.env.TWITTER_REFRESH_TOKEN\n})\n\nconst [ post ] = await Helpers.CreatePost(clientv2, clientv1, 'testing');\n```","readmeFilename":"README.md"}