@docusign/iam-sdk
Version:
Developer-friendly & type-safe Typescript SDK specifically catered to leverage *@docusign/iam-sdk* API.
38 lines (29 loc) • 1.13 kB
text/typescript
import { BeforeRequestContext, BeforeRequestHook } from "../types.js";
import { stringToBase64 } from "../../lib/base64.js";
import { GetTokenFromConfidentialAuthCodeSecurity } from "../../models/operations/gettokenfromconfidentialauthcode.js";
type TokenRequest = GetTokenFromConfidentialAuthCodeSecurity;
export class OAuthTokenRequestHook implements BeforeRequestHook {
beforeRequest(hookCtx: BeforeRequestContext, request: Request): Request {
switch (hookCtx.operationID) {
case "GetTokenFromRefreshToken":
case "GetTokenFromConfidentialAuthCode": {
let sec = hookCtx.securitySource;
if (typeof sec === "function") {
sec = sec();
}
if (!sec) {
throw new Error("security source is not defined");
}
const { clientId, secretKey }: TokenRequest = sec;
if (clientId && secretKey) {
const encoded = stringToBase64(
[clientId || "", secretKey || ""].join(":"),
);
request.headers.set("Authorization", `Basic ${encoded}`);
}
break;
}
}
return request;
}
}