// src/routes/users.ts
import { Router } from "express";
import { ToolController } from "../controllers/ToolController";
import { throttleMiddleware } from "../middlewares/throttle";
import { captchaMiddleware } from "../middlewares/captcha";
import { logsMiddleware } from "../middlewares/logs";
import { checkTokenMiddleware } from "../middlewares/checkToken";
const router = Router();

const toolController = new ToolController();

router.post(
  "/humanize",
  captchaMiddleware,
  throttleMiddleware,
  logsMiddleware,
  checkTokenMiddleware,
  toolController.humanize.bind(toolController)
);

// Diagnostic & Status endpoint for Search Engine Auto-Indexing (Google + Bing)
router.get("/indexing/status", async (req, res) => {
  try {
    const { loadServiceAccountCredentials, getIndexNowHost, getIndexNowKey } = await import("../services/indexingService");
    const creds = loadServiceAccountCredentials();
    res.json({
      success: true,
      google: {
        configured: Boolean(creds.credentials?.client_email),
        source: creds.source,
        client_email: creds.credentials?.client_email || null,
        project_id: creds.credentials?.project_id || null,
      },
      bing: {
        configured: true,
        provider: "IndexNow (Bing/Yandex/Naver/Seznam)",
        host: getIndexNowHost(),
        key: getIndexNowKey(),
        verificationUrl: `https://${getIndexNowHost()}/${getIndexNowKey()}.txt`
      }
    });
  } catch (err: any) {
    res.status(500).json({ success: false, error: err.message });
  }
});

// Manual on-demand trigger to ping all daily puzzle pages immediately
router.post("/indexing/ping-daily", async (req, res) => {
  try {
    const { pingAllDailyPuzzlePages } = await import("../services/indexingService");
    const summary = await pingAllDailyPuzzlePages({ force: true });
    res.json({ success: true, summary });
  } catch (err: any) {
    res.status(500).json({ success: false, error: err.message });
  }
});

export default router;
