mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-01-22 19:06:12 +00:00
e19644268c
* Use backend API route to fetch dynamic models # Conflicts: # app/components/chat/BaseChat.tsx * Override ApiKeys if provided in frontend * Remove obsolete artifact * Transport api keys from client to server in header * Cache static provider information * Restore reading provider settings from cookie * Reload only a single provider on api key change * Transport apiKeys and providerSettings via cookies. While doing this, introduce a simple helper function for cookies
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
export function parseCookies(cookieHeader: string | null) {
|
|
const cookies: Record<string, string> = {};
|
|
|
|
if (!cookieHeader) {
|
|
return 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.length > 0) {
|
|
// 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;
|
|
}
|
|
|
|
export function getApiKeysFromCookie(cookieHeader: string | null): Record<string, string> {
|
|
const cookies = parseCookies(cookieHeader);
|
|
return cookies.apiKeys ? JSON.parse(cookies.apiKeys) : {};
|
|
}
|
|
|
|
export function getProviderSettingsFromCookie(cookieHeader: string | null): Record<string, any> {
|
|
const cookies = parseCookies(cookieHeader);
|
|
return cookies.providers ? JSON.parse(cookies.providers) : {};
|
|
}
|