package kz.konturai.parser.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/facebook/webhook")
public class FacebookWebhookController {

    private static final Logger logger = LoggerFactory.getLogger(FacebookWebhookController.class);

    // Убедись, что на сайте Facebook в поле Verify Token ты вводишь ИМЕННО ЭТО:
    private final String VERIFY_TOKEN = "meatyhamhock";

    @GetMapping
    public ResponseEntity<String> verifyWebhook(
            @RequestParam(name = "hub.mode", required = false) String mode,
            @RequestParam(name = "hub.verify_token", required = false) String token,
            @RequestParam(name = "hub.challenge", required = false) String challenge) { // <--- ИЗМЕНИЛ НА String

        logger.info(">>> VERIFY REQUEST: mode={}, token={}, challenge={}", mode, token, challenge);

        // 1. Проверяем, что параметры вообще пришли
        if (mode == null || token == null || challenge == null) {
            logger.error(">>> Missing parameters");
            return ResponseEntity.badRequest().body("Missing parameters");
        }

        // 2. Проверяем токен
        if ("subscribe".equals(mode) && VERIFY_TOKEN.equals(token)) {
            logger.info(">>> SUCCESS: Verified!");
            // ВАЖНО: Возвращаем challenge обратно Фейсбуку!
            return ResponseEntity.ok(challenge);
        } else {
            logger.error(">>> FAIL: Token mismatch. Expected: {}, Got: {}", VERIFY_TOKEN, token);
            return ResponseEntity.status(HttpStatus.FORBIDDEN).body("Verification failed");
        }
    }

    @PostMapping
    public ResponseEntity<Void> receiveEvent(@RequestBody(required = false) String payload) {
        logger.info(">>> POST RECEIVED: {}", payload);
        return ResponseEntity.ok().build();
    }
}