Files

19 lines
1.6 KiB
TypeScript

import {sameOrigin} from '../../../lib/meshkee/session';
import { tenantApi } from '../../../lib/meshkee/api';
import { validateContact } from '../../../lib/meshkee/contact';
export async function POST(request:Request) {
if(!sameOrigin(request))return Response.json({message:'درخواست نامعتبر است.'},{status:403});
if(!request.headers.get('content-type')?.includes('application/json'))return Response.json({message:'فرمت درخواست نامعتبر است.'},{status:415});
const raw=await request.text();
if(raw.length>20000)return Response.json({message:'متن پیام بیش از حد طولانی است.'},{status:413});
let input;
try{input=JSON.parse(raw)}catch{return Response.json({message:'درخواست نامعتبر است.'},{status:400})}
if(!input||typeof input!=='object'||Array.isArray(input))return Response.json({message:'درخواست نامعتبر است.'},{status:400});
const {data,errors}=validateContact(input);
if(Object.keys(errors).length)return Response.json({message:'اطلاعات فرم را بررسی کنید.',errors},{status:400});
try {
await tenantApi('/contact-submissions',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(Object.fromEntries(Object.entries(data).filter(([,value])=>value)))});
return Response.json({message:'پیام شما با موفقیت ثبت شد. از ارتباط شما سپاسگزاریم.'},{status:201});
}catch{return Response.json({message:'پیام ارسال نشد. لطفاً دوباره تلاش کنید یا با ما تماس بگیرید.'},{status:502})}
}