import axios from 'axios'; import { cookies } from 'next/headers' import { NextRequest, NextResponse } from 'next/server'; export const POST = async (request: NextRequest) => { // INTERPOLATING API URL OF BACKEND const { offerType, offerName, pricePlanCode, remarks, sourceFrom, baseValidPeriod, serviceType, versionValidPeriod } = await request.json(); const url: string = `${process.env.NEXT_PUBLIC_API_URL}/priceplan/createpriceplan` const data = JSON.parse(cookies().get('credential')?.value ?? "") const token = `Bearer ${data.token}` try { // MAKE AN API REQUEST /* * - WE USE AXIOS INSTEAD OF FETCH * - FETCH ALWAYS RETURNS "TypeError [ERR_INVALID_STATE]: Invalid state: ReadableStream is already closed" * WHEN WE RUN "response.json()" */ const response = await axios(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': token }, data: JSON.stringify({ offerType, offerName, applyLevel: "S", pricePlanCode, remarks, sourceFrom, baseValidPeriod, versionValidPeriod, serviceType }) }) return NextResponse.json(response.data, { status: response.status }); } catch (error: any) { if (axios.isAxiosError(error)) { return NextResponse.json(error.response?.data || { message: 'Unknown error' }, { status: error.response?.status || 500 }); } return NextResponse.json({ message: 'An unexpected error occurred' }, { status: 500 }); } }