#!/usr/bin/env runts -- --allow-env --allow-import --allow-net import { parseArgs } from "jsr:@std/cli/parse-args"; import { encryptEcdhP256 } from "https://global.hatter.ink/script/get/@0/deno-wrapkey-mod.ts"; import { log } from "https://global.hatter.ink/script/get/@1/deno-commons-mod.ts"; import { fetchWithTimoutAndAutoProxy } from "https://global.hatter.ink/script/get/@0/deno-fetch-auto-proxy-mod.ts"; const endpoint = Deno.env.get("POST_ENCRYPTED_NOTE_ENDPOINT"); const publicKeyPointHex = Deno.env.get("ENCRYPTION_PUBLIC_KEY_POINT_HEX"); if (!endpoint || !publicKeyPointHex) { log.error("Endpoint and public key point hex must both assigned."); if (!endpoint) { log.info("POST_ENCRYPTED_NOTE_ENDPOINT must be assigned."); } if (!publicKeyPointHex) { log.info("ENCRYPTION_PUBLIC_KEY_POINT_HEX must be assigned."); } Deno.exit(1); } const flags = parseArgs(Deno.args, { boolean: ["help", "post-message"], string: ["title"], }); if (flags.help) { console.log("post-note.ts [--post-message] [--title ] <message>"); Deno.exit(0); } if (flags._.length === 0) { log.error("Requires message."); Deno.exit(1); } const args = []; if (flags.title) { const encryptedTitle = await encryptEcdhP256( "k", publicKeyPointHex, new TextEncoder().encode(flags.title), ); args.push(`title=${encodeURIComponent(encryptedTitle.toString())}`); } const encryptedMessage = await encryptEcdhP256( "k", publicKeyPointHex, new TextEncoder().encode(flags._.join("\n")), ); args.push(`memo=${encodeURIComponent(encryptedMessage.toString())}`); if (flags["post-message"]) { args.push("postMessage=true"); } const response = await fetchWithTimoutAndAutoProxy( `${endpoint}?${args.join("&")}`, ); console.info(response.status, await response.json()); // @SCRIPT-SIGNATURE-V1: yk-r1.ES256.20250705T082352+08:00.MEUCIQCXIiNRCQYEV3S5tDmu // j/1mMjlNjHne9gWjxNJuJuz8pQIgNtTvQ4XwngDgNSAGYCUDCgB7abitnVUsG+NRVwJJurw=