27 lines
1.1 KiB
JavaScript
27 lines
1.1 KiB
JavaScript
import { FetchHttpHandler } from "@smithy/fetch-http-handler";
|
|
import { CredentialsProviderError } from "@smithy/property-provider";
|
|
import { checkUrl } from "./checkUrl";
|
|
import { createGetRequest, getCredentials } from "./requestHelpers";
|
|
import { retryWrapper } from "./retry-wrapper";
|
|
export const fromHttp = (options) => {
|
|
options.logger?.debug("@aws-sdk/credential-provider-http", "fromHttp");
|
|
let host;
|
|
const full = options.credentialsFullUri;
|
|
if (full) {
|
|
host = full;
|
|
}
|
|
else {
|
|
throw new CredentialsProviderError("No HTTP credential provider host provided.");
|
|
}
|
|
const url = new URL(host);
|
|
checkUrl(url);
|
|
const requestHandler = new FetchHttpHandler();
|
|
return retryWrapper(async () => {
|
|
const request = createGetRequest(url);
|
|
if (options.authorizationToken) {
|
|
request.headers.Authorization = options.authorizationToken;
|
|
}
|
|
const result = await requestHandler.handle(request);
|
|
return getCredentials(result.response);
|
|
}, options.maxRetries ?? 3, options.timeout ?? 1000);
|
|
};
|