Spaces:
Build error
Build error
import { getClientConfig } from "../config/client"; | |
import { ApiPath, DEFAULT_CORS_HOST } from "../constant"; | |
export function corsPath(path: string) { | |
const baseUrl = getClientConfig()?.isApp ? `${DEFAULT_CORS_HOST}` : ""; | |
if (!path.startsWith("/")) { | |
path = "/" + path; | |
} | |
if (!path.endsWith("/")) { | |
path += "/"; | |
} | |
return `${baseUrl}${path}`; | |
} | |
export function corsFetch( | |
url: string, | |
options: RequestInit & { | |
proxyUrl?: string; | |
}, | |
) { | |
if (!url.startsWith("http")) { | |
throw Error("[CORS Fetch] url must starts with http/https"); | |
} | |
let proxyUrl = options.proxyUrl ?? corsPath(ApiPath.Cors); | |
if (!proxyUrl.endsWith("/")) { | |
proxyUrl += "/"; | |
} | |
url = url.replace("://", "/"); | |
const corsOptions = { | |
...options, | |
method: "POST", | |
headers: options.method | |
? { | |
...options.headers, | |
method: options.method, | |
} | |
: options.headers, | |
}; | |
const corsUrl = proxyUrl + url; | |
console.info("[CORS] target = ", corsUrl); | |
return fetch(corsUrl, corsOptions); | |
} | |