初始化环境文件
This commit is contained in:
41
node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js
generated
vendored
Normal file
41
node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
import { SignatureV4 } from "@smithy/signature-v4";
|
||||
import { SESSION_TOKEN_HEADER, SESSION_TOKEN_QUERY_PARAM } from "../constants";
|
||||
export class SignatureV4S3Express extends SignatureV4 {
|
||||
async signWithCredentials(requestToSign, credentials, options) {
|
||||
const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);
|
||||
requestToSign.headers[SESSION_TOKEN_HEADER] = credentials.sessionToken;
|
||||
const privateAccess = this;
|
||||
setSingleOverride(privateAccess, credentialsWithoutSessionToken);
|
||||
return privateAccess.signRequest(requestToSign, options ?? {});
|
||||
}
|
||||
async presignWithCredentials(requestToSign, credentials, options) {
|
||||
const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);
|
||||
delete requestToSign.headers[SESSION_TOKEN_HEADER];
|
||||
requestToSign.headers[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;
|
||||
requestToSign.query = requestToSign.query ?? {};
|
||||
requestToSign.query[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;
|
||||
const privateAccess = this;
|
||||
setSingleOverride(privateAccess, credentialsWithoutSessionToken);
|
||||
return this.presign(requestToSign, options);
|
||||
}
|
||||
}
|
||||
function getCredentialsWithoutSessionToken(credentials) {
|
||||
const credentialsWithoutSessionToken = {
|
||||
accessKeyId: credentials.accessKeyId,
|
||||
secretAccessKey: credentials.secretAccessKey,
|
||||
expiration: credentials.expiration,
|
||||
};
|
||||
return credentialsWithoutSessionToken;
|
||||
}
|
||||
function setSingleOverride(privateAccess, credentialsWithoutSessionToken) {
|
||||
const id = setTimeout(() => {
|
||||
throw new Error("SignatureV4S3Express credential override was created but not called.");
|
||||
}, 10);
|
||||
const currentCredentialProvider = privateAccess.credentialProvider;
|
||||
const overrideCredentialsProviderOnce = () => {
|
||||
clearTimeout(id);
|
||||
privateAccess.credentialProvider = currentCredentialProvider;
|
||||
return Promise.resolve(credentialsWithoutSessionToken);
|
||||
};
|
||||
privateAccess.credentialProvider = overrideCredentialsProviderOnce;
|
||||
}
|
||||
Reference in New Issue
Block a user