const fs = require("fs")

async function main() {
	const out = fs.openSync("output.txt", "w")
	const content = fs.readFileSync('input.txt', 'utf-8');
	const lines = content.split(/\r?\n/);

	for (let line of lines) {
		if(line.startsWith("!")) {
			fs.writeSync(out, line + "\n");
			continue;
		}

		if(line.trim() === "") {
			continue;
		}

		const alias = line
			.replace("https://matrix.to/#/", "")  // Remove links
			.split(" ")[0]																			// Ignore comments
			.trim();																										// Remove superfluous whitespace

		console.log("Resolving: ", alias);

		const id = await getIdForAlias(alias);
		fs.writeSync(out, id + "\n");
	}

	fs.closeSync(out);
}

async function getIdForAlias(alias) {
	const request = await fetch(`https://chat.upi.li/_matrix/client/v3/directory/room/${encodeURIComponent(alias)}`);
	if(!request.ok) {
		console.log(request);
		console.log("Fetching", `https://chat.upi.li/_matrix/client/v3/directory/room/${encodeURIComponent(alias)}`)
		throw new Error("Could not get data for room", alias);
	}
	const data = await request.json();

	return data.room_id;
}

main();