import { createRawCoreAPIClient } from "@/lib/features/coreClient";
import type { Route } from "./+types/login";

export async function action({ request }: Route.ActionArgs) {
    if (request.method !== "POST") {
        return new Response(JSON.stringify({ error: "Method Not Allowed" }), {
            status: 405,
            headers: { "Content-Type": "application/json" },
        });
    }
    try {
        const payload = await request.json();
        const coreClient = createRawCoreAPIClient();

        const upstreamResponse = await coreClient("/v1/admin/console-user/signin", {
            method: "POST",
            body: JSON.stringify(payload),
        });
        console.log(upstreamResponse, "upstreamResponse");


        const newHeaders = new Headers();

        upstreamResponse.headers.forEach((value, key) => {
            if (!['content-encoding', 'content-length', 'transfer-encoding'].includes(key.toLowerCase())) {
                newHeaders.append(key, value);
            }
        });

        const setCookie = upstreamResponse.headers.getSetCookie();
        if (setCookie.length > 0) {
            newHeaders.delete('set-cookie');
            setCookie.forEach(cookie => {
                newHeaders.append('Set-Cookie', cookie);
            });
        }

        return new Response(upstreamResponse.body, {
            status: upstreamResponse.status,
            headers: newHeaders,
        });

    } catch (error) {
        console.error("Proxy Login Error:", error);
        return new Response(JSON.stringify({ error: "Internal Server Error" }), {
            status: 500,
            headers: { "Content-Type": "application/json" },
        });
    }
}
