// http://127.0.0.1:8000/api/v1/contact/create/ export default defineEventHandler(async (event) => { const config = useRuntimeConfig(); const apiUrl = config.public.BASE_API_URL || 'http://127.0.0.1:8000'; // Backend credentials const BACKEND_EMAIL = config.backendEmail || 'admin@example.com'; const BACKEND_PASSWORD = config.backendPassword || 'admin123'; try { // Form verilerini al const body = await readBody(event); // Gerekli alanları kontrol et const { name, email, subject, message } = body; if (!name || !email || !subject || !message) { throw createError({ statusCode: 400, statusMessage: 'Tüm alanlar zorunludur' }); } // Client IP adresini al const ip = getRequestIP(event, { xForwardedFor: true }) || 'unknown'; // 1. Önce backend'e login ol let loginResponse; try { loginResponse = await $fetch(`${apiUrl}/api/v1/auth/jwt/create/`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: { email: BACKEND_EMAIL, password: BACKEND_PASSWORD } }); } catch (loginError: any) { // Detaylı hatayı sadece console'da göster console.error('Backend login error:', { status: loginError?.status, statusText: loginError?.statusText, message: loginError?.message }); throw createError({ statusCode: 503, statusMessage: 'Servis geçici olarak kullanılamıyor. Lütfen daha sonra tekrar deneyin.' }); } // @ts-expect-error - API response type const accessToken = loginResponse?.access; if (!accessToken) { console.error('No access token received from backend'); throw createError({ statusCode: 503, statusMessage: 'Servis geçici olarak kullanılamıyor. Lütfen daha sonra tekrar deneyin.' }); } // 2. Token ile contact form'u post et (IP adresi ile birlikte) let contactResponse; try { contactResponse = await $fetch(`${apiUrl}/api/v1/contact/create/`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${accessToken}` }, body: { name, email, ip, subject, message } }); } catch (contactError: any) { // Detaylı hatayı sadece console'da göster console.error('Contact form submission error:', { status: contactError?.status, statusText: contactError?.statusText, message: contactError?.message }); throw createError({ statusCode: 500, statusMessage: 'Mesaj gönderilemedi. Lütfen daha sonra tekrar deneyin.' }); } return { success: true, data: contactResponse, message: 'Mesajınız başarıyla gönderildi' }; } catch (error: any) { // Eğer zaten createError ile oluşturulmuş bir hata ise, direkt fırlat if (error.statusCode) { throw error; } // Beklenmeyen hatalar için console.error('Unexpected contact form error:', error); throw createError({ statusCode: 500, statusMessage: 'Bir hata oluştu. Lütfen daha sonra tekrar deneyin.' }); } });