diff --git a/actions/upload_image_to_imgur.js b/actions/upload_image_to_imgur.js new file mode 100644 index 00000000..db16f11f --- /dev/null +++ b/actions/upload_image_to_imgur.js @@ -0,0 +1,97 @@ +const { ImgurClient } = require('imgur'); + +module.exports = { + name: 'Upload Image To Imgur', + section: 'Other Stuff', + + subtitle() { + return `Upload Image to Imgur`; + }, + + variableStorage(data, varType) { + const type = parseInt(data.storage, 10); + if (type !== varType) return; + return [data.varName2, 'Image URL']; + }, + + fields: ['clientID', 'clientSecret', 'refreshToken', 'imageURL', 'storage', 'varName2'], + + html() { + return ` +
+
+
+ Client ID:
+ +
+
+ Client Secret (optional):
+ +
+
+ Refresh Token (optional):
+ +
+
+
+
+ Image URL:
+ +
+
+ Store In:
+ +
+
+ +
+ Variable Name:
+ +
+
`; + }, + + init() {}, + + action(cache) { + const data = cache.actions[cache.index]; + const clientID = this.evalMessage(data.clientID, cache); + const clientSecret = this.evalMessage(data.clientSecret, cache); + const refreshToken = this.evalMessage(data.refreshToken, cache); + const imageURL = this.evalMessage(data.imageURL, cache); + const varName2 = this.evalMessage(data.varName2, cache); + const storage = parseInt(data.storage, 10); + + if (!clientID || !imageURL) { + console.error('Client ID or Image URL is missing!'); + return this.callNextAction(cache); + } + + const client = new ImgurClient({ + clientId: clientID, + clientSecret: clientSecret || undefined, + refreshToken: refreshToken || undefined, + }); + + client + .upload({ + image: imageURL, + type: 'url', + }) + .then((response) => { + const uploadedImageUrl = response.data.link; + this.storeValue(uploadedImageUrl, storage, varName2, cache); + this.callNextAction(cache); + }) + .catch((err) => { + console.error('Error uploading image to Imgur:', err.message); + this.callNextAction(cache); + }); + }, + mod() {}, +};