diff --git a/src/modules/misc/urldecode.js b/src/modules/misc/urldecode.js new file mode 100644 index 0000000..cb19372 --- /dev/null +++ b/src/modules/misc/urldecode.js @@ -0,0 +1,37 @@ +const Command = require("#lib/command.js"); +const {Icons} = require("#util/constants.js"); + +const urldecode = new Command("urldecode"); +urldecode.category = "misc"; +urldecode.helpText = "Get information on a URL"; +urldecode.usage = ""; +urldecode.callback = async function (msg, line, [urlString]) { + try { + const url = new URL(urlString); + + const info = [ + ["scheme", url.protocol], + ["username", url.username], + ["password", url.password], + ["host", url.host], + ["path", url.pathname], + ["hash", url.hash], + ]; + + return `\`\`\`py +${info + .filter((kv) => kv[1].length > 0) + .map(([k, v]) => `${k} = ${v}`) + .join("\n")} + +${JSON.stringify( + url.searchParams, + (_, v) => (v instanceof URLSearchParams ? Object.fromEntries(v.entries()) : v), + "\t" +)} +\`\`\``; + } catch (err) { + return `${Icons.silk.error} Failed to decode URL:\n\`\`\`\n${err}\`\`\``; + } +}; +hf.registerCommand(urldecode);