urldecode: cleanup, error handling

This commit is contained in:
Cynthia Foxwell 2025-07-12 10:50:26 -06:00
parent 77283cc9d3
commit 6445664512
Signed by: Cynosphere
SSH key fingerprint: SHA256:H3SM8ufP/uxqLwKSH7xY89TDnbR9uOHzjLoBr0tlajk

View file

@ -1,29 +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 url information";
urldecode.helpText = "Get information on a URL";
urldecode.usage = "<url>";
urldecode.callback = async function (msg, _, [urlString]) {
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],
["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")}
${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"
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);