fix(cli): handle extra headers in zip call

This commit is contained in:
Ruben Fiszel
2023-08-05 18:07:54 +02:00
parent 54302bf145
commit 7a731dc838
4 changed files with 39 additions and 10 deletions
+12 -1
View File
@@ -2,6 +2,7 @@
import { colors, GlobalUserInfo, log, setClient, UserService } from "./deps.ts";
import { loginInteractive, tryGetLoginInfo } from "./login.ts";
import { GlobalOptions } from "./types.ts";
import { getHeaders } from "./utils.ts";
import {
addWorkspace,
getActiveWorkspace,
@@ -104,8 +105,18 @@ export async function tryResolveVersion(
const workspaceRes = await tryResolveWorkspace(opts);
if (workspaceRes.isError) return undefined;
const requestHeaders: HeadersInit = new Headers();
const extraHeaders = getHeaders();
if (extraHeaders) {
for (const [key, value] of Object.entries(extraHeaders)) {
requestHeaders.set(key, value);
}
}
const response = await fetch(
new URL(new URL(workspaceRes.value.remote).origin + "/api/version")
new URL(new URL(workspaceRes.value.remote).origin + "/api/version"),
{ headers: requestHeaders, method: "GET" }
);
const version = await response.text();
try {
+4 -9
View File
@@ -22,6 +22,7 @@ import dev from "./dev.ts";
import { tryResolveVersion } from "./context.ts";
import { GlobalOptions } from "./types.ts";
import { OpenAPI } from "./deps.ts";
import { getHeaders } from "./utils.ts";
addEventListener("error", (event) => {
if (event.error) {
@@ -122,15 +123,9 @@ try {
});
log.debug("Debug logging enabled. CLI build against " + VERSION);
const headers = Deno.env.get("HEADERS");
if (headers) {
const parsedHeaders = Object.fromEntries(
headers.split(",").map((h) => h.split(":").map((s) => s.trim()))
);
log.debug(
"Headers from env keys: " + JSON.stringify(Object.keys(parsedHeaders))
);
OpenAPI.HEADERS = parsedHeaders;
const extraHeaders = getHeaders();
if (extraHeaders) {
OpenAPI.HEADERS = extraHeaders;
}
await command.parse(Deno.args);
} catch (e) {
+8
View File
@@ -2,6 +2,7 @@
import { GlobalOptions } from "./types.ts";
import { colors, Command, JSZip } from "./deps.ts";
import { Workspace } from "./workspace.ts";
import { getHeaders } from "./utils.ts";
export async function downloadZip(
workspace: Workspace,
@@ -15,6 +16,13 @@ export async function downloadZip(
requestHeaders.set("Authorization", "Bearer " + workspace.token);
requestHeaders.set("Content-Type", "application/octet-stream");
const extraHeaders = getHeaders();
if (extraHeaders) {
for (const [key, value] of Object.entries(extraHeaders)) {
requestHeaders.set(key, value);
}
}
const zipResponse = await fetch(
workspace.remote +
"api/w/" +
+15
View File
@@ -74,3 +74,18 @@ export function deepEqual<T>(a: T, b: T): boolean {
// true if both NaN, false otherwise
return a !== a && b !== b;
}
export function getHeaders(): Record<string, string> | undefined {
const headers = Deno.env.get("HEADERS");
if (headers) {
const parsedHeaders = Object.fromEntries(
headers.split(",").map((h) => h.split(":").map((s) => s.trim()))
);
log.debug(
"Headers from env keys: " + JSON.stringify(Object.keys(parsedHeaders))
);
return parsedHeaders;
} else {
return undefined;
}
}