@tableau/taco-toolkit
Version:
Tableau Connector Toolkit
124 lines • 6.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOAuthHeader = exports.getBasicAuthHeader = exports.getAuthHeader = exports.extractOAuthSecretsFromHeader = exports.OAuthCredentials = void 0;
var AUTH_TOKENS;
(function (AUTH_TOKENS) {
AUTH_TOKENS["accessToken"] = "access-token";
})(AUTH_TOKENS || (AUTH_TOKENS = {}));
/**
* Extracts OAuth secrets from the provided headers.
*
* @param headers - The headers containing OAuth secrets inclding access-token.
* @returns The extracted OAuth secrets.
*/
function extractOAuthSecretsFromHeader(headers) {
var _a;
if (!headers) {
return undefined;
}
var accessToken = headers[AUTH_TOKENS.accessToken];
if (!accessToken) {
return undefined;
}
return _a = {},
_a[AUTH_TOKENS.accessToken] = accessToken,
_a;
}
exports.extractOAuthSecretsFromHeader = extractOAuthSecretsFromHeader;
/**
* Generates an authentication header using the provided token and optional prefix.
*
* @param token - The token used for authentication.
* @param prefix - The prefix to be added before the token (default is 'Bearer').
* @returns The authentication header.
* @example
* ```
* //Generating a custom prefix token header
* const token = 'your-custom-token';
* const customPrefix = 'Custom';
* const header = getAuthHeader(token, customPrefix);
* // header will be: { Authorization: 'Custom your-custom-token' }
*```
*/
function getAuthHeader(token, prefix) {
if (prefix === void 0) { prefix = 'Bearer'; }
return { Authorization: "".concat(prefix, " ").concat(token) };
}
exports.getAuthHeader = getAuthHeader;
/**
* Generates a Basic authentication header using the provided username and password.
*
* @param username - The username for authentication.
* @param password - The password for authentication.
* @returns The Basic authentication header.
*
* @example
* ```
* // Generating a Basic authentication header
* const username = 'yourUsername';
* const password = 'yourPassword';
* const basicAuthHeader = getBasicAuthHeader(username, password);
* console.log(basicAuthHeader);
* // Output will be: { Authorization: 'Basic base64EncodedString' }
* ```
*/
function getBasicAuthHeader(username, password) {
var token = Buffer.from("".concat(username, ":").concat(password)).toString('base64');
return getAuthHeader(token, 'Basic');
}
exports.getBasicAuthHeader = getBasicAuthHeader;
/**
* Generates an OAuth authentication header based on the provided secrets.
* If no access token is provided in the secrets, an empty object is returned.
*
* @param headers - The headers containing access-token.
* @returns The authentication header.
*/
function getOAuthHeader(headers) {
if (!headers) {
return {};
}
var oAuthSecrets = extractOAuthSecretsFromHeader(headers);
var accessToken = oAuthSecrets === null || oAuthSecrets === void 0 ? void 0 : oAuthSecrets[AUTH_TOKENS.accessToken];
if (accessToken) {
return getAuthHeader(accessToken);
}
else {
return {};
}
}
exports.getOAuthHeader = getOAuthHeader;
/**
* Represents OAuth credentials. includes only access token
*/
var OAuthCredentials = /** @class */ (function () {
/**
* Create a new instance of OAuthCredentials.
*
* @param headers - The headers containing OAuth secrets. Only `access-token` will be used from the provided headers
*/
function OAuthCredentials(headers) {
var oAuthSecrets = extractOAuthSecretsFromHeader(headers);
this.accessToken = oAuthSecrets === null || oAuthSecrets === void 0 ? void 0 : oAuthSecrets[AUTH_TOKENS.accessToken];
}
Object.defineProperty(OAuthCredentials.prototype, "authHeader", {
/**
* Get the authentication header based on the access token.
*
* @returns The authentication header.
*/
get: function () {
if (this.accessToken) {
return getAuthHeader(this.accessToken);
}
else {
return {};
}
},
enumerable: false,
configurable: true
});
return OAuthCredentials;
}());
exports.OAuthCredentials = OAuthCredentials;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jcmVkZW50aWFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvYXV0aC1jcmVkZW50aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1QkEsSUFBSyxXQUVKO0FBRkQsV0FBSyxXQUFXO0lBQ2QsMkNBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQUZJLFdBQVcsS0FBWCxXQUFXLFFBRWY7QUFXRDs7Ozs7R0FLRztBQUVILFNBQVMsNkJBQTZCLENBQUMsT0FBZ0M7O0lBQ3JFLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLFNBQVMsQ0FBQTtLQUNqQjtJQUVELElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQzFFLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsT0FBTyxTQUFTLENBQUE7S0FDakI7SUFFRDtRQUNFLEdBQUMsV0FBVyxDQUFDLFdBQVcsSUFBRyxXQUFXO1dBQ3ZDO0FBQ0gsQ0FBQztBQWlHMEIsc0VBQTZCO0FBL0Z4RDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILFNBQVMsYUFBYSxDQUFDLEtBQWEsRUFBRSxNQUFpQjtJQUFqQix1QkFBQSxFQUFBLGlCQUFpQjtJQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQUcsTUFBTSxjQUFJLEtBQUssQ0FBRSxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQTZFeUQsc0NBQWE7QUEzRXZFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsU0FBUyxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO0lBQzVELElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBRyxRQUFRLGNBQUksUUFBUSxDQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdkUsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFzRHdFLGdEQUFrQjtBQXBEM0Y7Ozs7OztHQU1HO0FBQ0gsU0FBUyxjQUFjLENBQUMsT0FBZ0M7SUFDdEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sRUFBRSxDQUFBO0tBQ1Y7SUFDRCxJQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUUzRCxJQUFNLFdBQVcsR0FBRyxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzNELElBQUksV0FBVyxFQUFFO1FBQ2YsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUE7S0FDbEM7U0FBTTtRQUNMLE9BQU8sRUFBRSxDQUFBO0tBQ1Y7QUFDSCxDQUFDO0FBaUM0Rix3Q0FBYztBQS9CM0c7O0dBRUc7QUFFSDtJQUVFOzs7O09BSUc7SUFDSCwwQkFBWSxPQUFnQztRQUMxQyxJQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUUzRCxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQU9ELHNCQUFJLHdDQUFVO1FBTGQ7Ozs7V0FJRzthQUNIO1lBQ0UsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7YUFDdkM7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUE7YUFDVjtRQUNILENBQUM7OztPQUFBO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBekJELElBeUJDO0FBRVEsNENBQWdCIn0=