// $ node client.js ./thai_curry.jpg ./out.png

const fs = require("fs");
const fetch = require("node-fetch");
const { fromBuffer } = require("file-type");

const inputFilePath = process.argv[2];
const outputFilePath = process.argv[3];

// Optional
const options = {
  bin: 130,
  size: 1000,
  base: "w",
  png: 1,
  auto: 1,
};

async function main() {
  if (!inputFilePath || !outputFilePath) {
    console.log("Usage: node client.js <inputFilePath> <outputFilePath>");
    return;
  }

  // 画像を読み込んでData URI形式に変換
  const buffer = await fs.promises.readFile(inputFilePath);
  const { mime } = await fromBuffer(buffer);
  const dataUri = `data:${mime};base64,${buffer.toString("base64")}`;

  const apiUrl = "https://pointillism.daiiz.dev/api/generate";
  const res = await fetch(apiUrl, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      uri: dataUri,
      ...options,
    }),
  });

  if (!res.ok) {
    console.error(res.status, res.statusText);
  }

  await fs.promises.writeFile(outputFilePath, await res.buffer());
}

main();