MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / proxyLocalRequest

Function proxyLocalRequest

scripts/studio-host-provider.mjs:365–402  ·  view source on GitHub ↗
(config, request)

Source from the content-addressed store, hash-verified

363}
364
365async function proxyLocalRequest(config, request) {
366 const target = new URL(request.path, `${config.localUrl}/`);
367 if (!target.searchParams.has("simdeckToken")) {
368 target.searchParams.set("simdeckToken", config.localToken);
369 }
370 const headers = new Headers(request.headers || {});
371 headers.set("x-simdeck-token", config.localToken);
372 headers.delete("host");
373 headers.delete("content-length");
374 const response = await fetch(target, {
375 body: request.bodyBase64
376 ? Buffer.from(request.bodyBase64, "base64")
377 : undefined,
378 headers,
379 method: request.method,
380 signal: AbortSignal.timeout(config.proxyTimeoutMs),
381 });
382 const responseHeaders = {};
383 for (const [name, value] of response.headers.entries()) {
384 const lower = name.toLowerCase();
385 if (
386 lower === "connection" ||
387 lower === "content-encoding" ||
388 lower === "content-length" ||
389 lower === "transfer-encoding"
390 ) {
391 continue;
392 }
393 responseHeaders[name] = value;
394 }
395 return {
396 responseBodyBase64: Buffer.from(await response.arrayBuffer()).toString(
397 "base64",
398 ),
399 responseHeaders,
400 responseStatus: response.status,
401 };
402}
403
404async function completeJob(config, jobId, body) {
405 return studioJson(config, "/api/actions/provider-hosts/jobs/complete", {

Callers 1

handleRpcFunction · 0.70

Calls 6

fetchFunction · 0.85
setMethod · 0.80
fromMethod · 0.80
toStringMethod · 0.80
arrayBufferMethod · 0.80
deleteMethod · 0.65

Tested by

no test coverage detected