@scalar/oas-utils
Version:
Open API spec and Yaml handling utilities
62 lines (61 loc) • 1.87 kB
JavaScript
const processSecuritySchemes = (securitySchemes) => {
const result = {
headers: [],
queryString: [],
cookies: []
};
for (const scheme of securitySchemes) {
if (scheme.type === "apiKey") {
const value = scheme["x-scalar-secret-token"] || "YOUR_SECRET_TOKEN";
if (!scheme.name) {
continue;
}
const param = { name: scheme.name, value };
switch (scheme.in) {
case "header":
result.headers.push(param);
break;
case "query":
result.queryString.push(param);
break;
case "cookie":
result.cookies.push(param);
break;
}
continue;
}
if (scheme.type === "http") {
if (scheme.scheme === "basic") {
const username = scheme["x-scalar-secret-username"] || "";
const password = scheme["x-scalar-secret-password"] || "";
const value = `${username}:${password}`;
const auth = value === ":" ? "username:password" : Buffer.from(value).toString("base64");
result.headers.push({
name: "Authorization",
value: `Basic ${auth}`
});
} else if (scheme.scheme === "bearer") {
const token = scheme["x-scalar-secret-token"] || "YOUR_SECRET_TOKEN";
result.headers.push({
name: "Authorization",
value: `Bearer ${token}`
});
}
continue;
}
if (scheme.type === "oauth2" && scheme.flows) {
const flows = Object.values(scheme.flows);
const flow = flows.find((f) => f["x-scalar-secret-token"]);
const token = flow?.["x-scalar-secret-token"] || "YOUR_SECRET_TOKEN";
result.headers.push({
name: "Authorization",
value: `Bearer ${token}`
});
}
}
return result;
};
export {
processSecuritySchemes
};
//# sourceMappingURL=process-security-schemes.js.map