2022-07-12 09:00:22 +02:00

56 lines
2.3 KiB
JavaScript

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
import { HttpHeaders } from "../httpHeaders";
/**
* Authenticates to a service using an API key.
*/
var ApiKeyCredentials = /** @class */ (function () {
/**
* @constructor
* @param {object} options Specifies the options to be provided for auth. Either header or query needs to be provided.
*/
function ApiKeyCredentials(options) {
if (!options || (options && !options.inHeader && !options.inQuery)) {
throw new Error("options cannot be null or undefined. Either \"inHeader\" or \"inQuery\" property of the options object needs to be provided.");
}
this.inHeader = options.inHeader;
this.inQuery = options.inQuery;
}
/**
* Signs a request with the values provided in the inHeader and inQuery parameter.
*
* @param {WebResource} webResource The WebResource to be signed.
* @returns {Promise<WebResource>} The signed request object.
*/
ApiKeyCredentials.prototype.signRequest = function (webResource) {
if (!webResource) {
return Promise.reject(new Error("webResource cannot be null or undefined and must be of type \"object\"."));
}
if (this.inHeader) {
if (!webResource.headers) {
webResource.headers = new HttpHeaders();
}
for (var headerName in this.inHeader) {
webResource.headers.set(headerName, this.inHeader[headerName]);
}
}
if (this.inQuery) {
if (!webResource.url) {
return Promise.reject(new Error("url cannot be null in the request object."));
}
if (webResource.url.indexOf("?") < 0) {
webResource.url += "?";
}
for (var key in this.inQuery) {
if (!webResource.url.endsWith("?")) {
webResource.url += "&";
}
webResource.url += key + "=" + this.inQuery[key];
}
}
return Promise.resolve(webResource);
};
return ApiKeyCredentials;
}());
export { ApiKeyCredentials };
//# sourceMappingURL=apiKeyCredentials.js.map