require('dotenv').config();
const http = require('http');
const Telegram = require('./application/controllers/Telegram');

const server = http.createServer((req, res) => {
    // استخراج کد 10 رقمی از انتهای آدرس URL
    const urlParts = req.url.split('/');
    const webhookCode = urlParts[urlParts.length - 1];

    // فقط درخواست‌های POST که از سمت تلگرام می‌آیند را پردازش می‌کنیم
    if (req.method === 'POST') {
        let body = '';

        // دریافت دیتای خام (Buffer) و تبدیل به رشته
        req.on('data', chunk => { 
            body += chunk.toString(); 
        });

        req.on('end', async () => {
            try {
                // اگر بدنه درخواست خالی نبود، آن را پارس کن
                if (body) {
                    const update = JSON.parse(body);
                    
                    // ارسال دیتای تلگرام و کد 10 رقمی به کنترلر
                    await Telegram.handleWebhook(update, webhookCode);
                }
            } catch (e) {
                console.error("خطا در پردازش JSON ورودی یا کد 10 رقمی");
            }

            // همیشه به تلگرام پاسخ 200 می‌دهیم تا ارسال پیام را تکرار نکند
            res.writeHead(200, { 'Content-Type': 'text/plain' });
            res.end('OK');
        });
    } else {
        // پاسخ به درخواست‌های غیر POST (مثل باز کردن آدرس در مرورگر)
        res.writeHead(404);
        res.end('Not Found');
    }
});

// اجرای سرور روی پورت 3000
const PORT = 3000;
server.listen(PORT, () => {
    console.log(`--- Server Started on Port ${PORT} ---`);
    console.log(`Waiting for Telegram Webhooks...`);
});