mirror of
https://github.com/stackblitz/bolt.new
synced 2025-02-06 04:48:04 +00:00
Use cookies instead of request body that is stale sometimes
This commit is contained in:
parent
6b13ecda6b
commit
c575ee316b
@ -10,12 +10,35 @@ export async function action(args: ActionFunctionArgs) {
|
|||||||
return chatAction(args);
|
return chatAction(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseCookies(cookieHeader) {
|
||||||
|
const cookies = {};
|
||||||
|
|
||||||
|
// Split the cookie string by semicolons and spaces
|
||||||
|
const items = cookieHeader.split(";").map(cookie => cookie.trim());
|
||||||
|
|
||||||
|
items.forEach(item => {
|
||||||
|
const [name, ...rest] = item.split("=");
|
||||||
|
if (name && rest) {
|
||||||
|
// Decode the name and value, and join value parts in case it contains '='
|
||||||
|
const decodedName = decodeURIComponent(name.trim());
|
||||||
|
const decodedValue = decodeURIComponent(rest.join("=").trim());
|
||||||
|
cookies[decodedName] = decodedValue;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return cookies;
|
||||||
|
}
|
||||||
|
|
||||||
async function chatAction({ context, request }: ActionFunctionArgs) {
|
async function chatAction({ context, request }: ActionFunctionArgs) {
|
||||||
const { messages, apiKeys } = await request.json<{
|
const { messages } = await request.json<{
|
||||||
messages: Messages,
|
messages: Messages
|
||||||
apiKeys: Record<string, string>
|
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
|
const cookieHeader = request.headers.get("Cookie");
|
||||||
|
|
||||||
|
// Parse the cookie's value (returns an object or null if no cookie exists)
|
||||||
|
const apiKeys = JSON.parse(parseCookies(cookieHeader).apiKeys || "{}");
|
||||||
|
|
||||||
const stream = new SwitchableStream();
|
const stream = new SwitchableStream();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -56,7 +79,7 @@ async function chatAction({ context, request }: ActionFunctionArgs) {
|
|||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
|
||||||
if (error.message?.includes('API key')) {
|
if (error.message?.includes('API key')) {
|
||||||
throw new Response('Invalid or missing API key', {
|
throw new Response('Invalid or missing API key', {
|
||||||
status: 401,
|
status: 401,
|
||||||
|
Loading…
Reference in New Issue
Block a user