{"version":3,"file":"getUrl.mjs","sources":["../../../../../../src/providers/s3/apis/internal/getUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation';\nimport { getPresignedGetObjectUrl } from '../../utils/client/s3data';\nimport { resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError';\nimport { DEFAULT_PRESIGN_EXPIRATION, MAX_URL_EXPIRATION, STORAGE_INPUT_KEY, } from '../../utils/constants';\nimport { constructContentDisposition } from '../../utils/constructContentDisposition';\nimport { getProperties } from './getProperties';\nexport const getUrl = async (amplify, input) => {\n    const { options: getUrlOptions } = input;\n    const { s3Config, keyPrefix, bucket, identityId } = await resolveS3ConfigAndInput(amplify, input);\n    const { inputType, objectKey } = validateStorageOperationInput(input, identityId);\n    validateBucketOwnerID(getUrlOptions?.expectedBucketOwner);\n    const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n    if (getUrlOptions?.validateObjectExistence) {\n        await getProperties(amplify, input, StorageAction.GetUrl);\n    }\n    let urlExpirationInSec = getUrlOptions?.expiresIn ?? DEFAULT_PRESIGN_EXPIRATION;\n    const resolvedCredential = typeof s3Config.credentials === 'function'\n        ? await s3Config.credentials()\n        : s3Config.credentials;\n    const awsCredExpiration = resolvedCredential.expiration;\n    if (awsCredExpiration) {\n        const awsCredExpirationInSec = Math.floor((awsCredExpiration.getTime() - Date.now()) / 1000);\n        urlExpirationInSec = Math.min(awsCredExpirationInSec, urlExpirationInSec);\n    }\n    const maxUrlExpirationInSec = MAX_URL_EXPIRATION / 1000;\n    assertValidationError(urlExpirationInSec <= maxUrlExpirationInSec, StorageValidationErrorCode.UrlExpirationMaxLimitExceed);\n    // expiresAt is the minimum of credential expiration and url expiration\n    return {\n        url: await getPresignedGetObjectUrl({\n            ...s3Config,\n            credentials: resolvedCredential,\n            expiration: urlExpirationInSec,\n        }, {\n            Bucket: bucket,\n            Key: finalKey,\n            ...(getUrlOptions?.contentDisposition && {\n                ResponseContentDisposition: constructContentDisposition(getUrlOptions.contentDisposition),\n            }),\n            ...(getUrlOptions?.contentType && {\n                ResponseContentType: getUrlOptions.contentType,\n            }),\n            ResponseCacheControl: getUrlOptions?.cacheControl,\n            ExpectedBucketOwner: getUrlOptions?.expectedBucketOwner,\n        }),\n        expiresAt: new Date(Date.now() + urlExpirationInSec * 1000),\n    };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AASY,MAAC,MAAM,GAAG,OAAO,OAAO,EAAE,KAAK,KAAK;AAChD,IAAI,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,KAAK;AAC5C,IAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;AACrG,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,KAAK,EAAE,UAAU,CAAC;AACrF,IAAI,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,CAAC;AAC7D,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,IAAI,aAAa,EAAE,uBAAuB,EAAE;AAChD,QAAQ,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;AACjE,IAAI;AACJ,IAAI,IAAI,kBAAkB,GAAG,aAAa,EAAE,SAAS,IAAI,0BAA0B;AACnF,IAAI,MAAM,kBAAkB,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK;AAC/D,UAAU,MAAM,QAAQ,CAAC,WAAW;AACpC,UAAU,QAAQ,CAAC,WAAW;AAC9B,IAAI,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU;AAC3D,IAAI,IAAI,iBAAiB,EAAE;AAC3B,QAAQ,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AACpG,QAAQ,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;AACjF,IAAI;AACJ,IAAI,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,IAAI;AAC3D,IAAI,qBAAqB,CAAC,kBAAkB,IAAI,qBAAqB,EAAE,0BAA0B,CAAC,2BAA2B,CAAC;AAC9H;AACA,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5C,YAAY,GAAG,QAAQ;AACvB,YAAY,WAAW,EAAE,kBAAkB;AAC3C,YAAY,UAAU,EAAE,kBAAkB;AAC1C,SAAS,EAAE;AACX,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,EAAE,QAAQ;AACzB,YAAY,IAAI,aAAa,EAAE,kBAAkB,IAAI;AACrD,gBAAgB,0BAA0B,EAAE,2BAA2B,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACzG,aAAa,CAAC;AACd,YAAY,IAAI,aAAa,EAAE,WAAW,IAAI;AAC9C,gBAAgB,mBAAmB,EAAE,aAAa,CAAC,WAAW;AAC9D,aAAa,CAAC;AACd,YAAY,oBAAoB,EAAE,aAAa,EAAE,YAAY;AAC7D,YAAY,mBAAmB,EAAE,aAAa,EAAE,mBAAmB;AACnE,SAAS,CAAC;AACV,QAAQ,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAAC;AACnE,KAAK;AACL;;;;"}