mirror of
https://github.com/eliasstepanik/core.git
synced 2026-01-11 21:38:27 +00:00
* Feat: added integration connect and mcp oAuth * Feat: add mcp support to chat * Fix: UI for integrations and logs * Fix: ui * Fix: proxy server * Feat: enhance MCP tool integration and loading functionality * Fix: added header * Fix: Linear integration sync --------- Co-authored-by: Manoj K <saimanoj58@gmail.com>
74 lines
1.8 KiB
TypeScript
74 lines
1.8 KiB
TypeScript
export async function proxyRequest(
|
|
request: Request,
|
|
targetUrl: string,
|
|
token: string,
|
|
): Promise<Response> {
|
|
try {
|
|
const targetURL = new URL(targetUrl);
|
|
|
|
const headers = new Headers();
|
|
|
|
// Copy relevant headers from the original request
|
|
const headersToProxy = [
|
|
"content-type",
|
|
"user-agent",
|
|
"accept",
|
|
"accept-language",
|
|
"accept-encoding",
|
|
"mcp-session-id",
|
|
"last-event-id",
|
|
];
|
|
|
|
headersToProxy.forEach((headerName) => {
|
|
const value = request.headers.get(headerName);
|
|
if (value) {
|
|
headers.set(headerName, value);
|
|
}
|
|
});
|
|
|
|
headers.set("Authorization", `Bearer ${token}`);
|
|
|
|
const body =
|
|
request.method !== "GET" && request.method !== "HEAD"
|
|
? await request.arrayBuffer()
|
|
: undefined;
|
|
|
|
const response = await fetch(targetURL.toString(), {
|
|
method: request.method,
|
|
headers,
|
|
body,
|
|
});
|
|
|
|
// Create response headers, excluding hop-by-hop headers
|
|
const responseHeaders = new Headers();
|
|
const headersToExclude = [
|
|
"connection",
|
|
"keep-alive",
|
|
"proxy-authenticate",
|
|
"proxy-authorization",
|
|
"te",
|
|
"trailers",
|
|
"transfer-encoding",
|
|
"upgrade",
|
|
];
|
|
|
|
response.headers.forEach((value, key) => {
|
|
if (!headersToExclude.includes(key.toLowerCase())) {
|
|
responseHeaders.set(key, value);
|
|
}
|
|
});
|
|
|
|
return new Response(response.body, {
|
|
status: response.status,
|
|
statusText: response.statusText,
|
|
headers: responseHeaders,
|
|
});
|
|
} catch (error) {
|
|
console.error("Proxy request failed:", error);
|
|
return new Response(JSON.stringify({ error: "Proxy request failed" }), {
|
|
status: 500,
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
}
|
|
}
|