overwritingVersioning - return versioning information for S3 to handle * storing version metadata with a specific version id. * @param {object} objMD - obj metadata * @param {object} metadataStoreParams - custom built object containing resource details. * @return {object} options * options.vers
(objMD, metadataStoreParams)
| 523 | * version id of the null version |
| 524 | */ |
| 525 | function overwritingVersioning(objMD, metadataStoreParams) { |
| 526 | metadataStoreParams.updateMicroVersionId = true; |
| 527 | metadataStoreParams.amzStorageClass = objMD['x-amz-storage-class']; |
| 528 | |
| 529 | // set correct originOp |
| 530 | metadataStoreParams.originOp = 's3:ObjectRestore:Completed'; |
| 531 | |
| 532 | // When restoring an MPU with different number of parts the etag changes |
| 533 | // as it's calculated based on the etags of the parts. We keep the original |
| 534 | // etag to allow proper expiration of the restored object. |
| 535 | if (metadataStoreParams.contentMD5 !== objMD['content-md5']) { |
| 536 | metadataStoreParams.restoredEtag = metadataStoreParams.contentMD5; |
| 537 | metadataStoreParams.contentMD5 = objMD['content-md5']; |
| 538 | } |
| 539 | |
| 540 | // update restore |
| 541 | const days = objMD.archive?.restoreRequestedDays; |
| 542 | const now = Date.now(); |
| 543 | metadataStoreParams.archive = { |
| 544 | archiveInfo: objMD.archive?.archiveInfo, |
| 545 | restoreRequestedAt: objMD.archive?.restoreRequestedAt, |
| 546 | restoreRequestedDays: objMD.archive?.restoreRequestedDays, |
| 547 | restoreCompletedAt: new Date(now), |
| 548 | restoreWillExpireAt: new Date(now + (days * scaledMsPerDay)), |
| 549 | }; |
| 550 | |
| 551 | /* eslint-enable no-param-reassign */ |
| 552 | |
| 553 | const versionId = objMD.versionId || undefined; |
| 554 | const options = { |
| 555 | versionId, |
| 556 | isNull: objMD.isNull, |
| 557 | }; |
| 558 | if (objMD.nullVersionId) { |
| 559 | options.extraMD = { |
| 560 | nullVersionId: objMD.nullVersionId, |
| 561 | }; |
| 562 | } |
| 563 | |
| 564 | restoreMetadata(objMD, metadataStoreParams); |
| 565 | |
| 566 | return options; |
| 567 | } |
| 568 | |
| 569 | module.exports = { |
| 570 | decodeVersionId, |
no test coverage detected