in source/ingest/lib/s3restore/index.js [42:84]
async checkRestoreStatus() {
const src = (this.stateData.input || {}).src || {};
if (!src.bucket || !src.key) {
throw new RestoreError('mising src.bucket or key');
}
const response = await CommonUtils.headObject(src.bucket, src.key);
const restoreData = S3Restore.parseKeyValuePair(response.Restore);
/* "Restore": "ongoing-request=\"true\"" */
const expiredAt = restoreData[S3Restore.Constants.Key.ExpiryDate]
? new Date(restoreData[S3Restore.Constants.Key.ExpiryDate]).getTime()
: undefined;
const storageClass = response.StorageClass;
const startTime
= ((this.stateData.input || {}).restore || {}).startTime || new Date().getTime();
if (storageClass !== 'GLACIER' && storageClass !== 'DEEP_ARCHIVE') {
this.stateData.setCompleted();
} else if (restoreData[S3Restore.Constants.Key.OngoingRequest] === 'false') {
this.stateData.setCompleted();
} else if (!response.Restore) {
await this.startRestore();
this.stateData.setStarted();
} else {
this.stateData.setProgress(this.computeRetrivalProgress(startTime, storageClass));
}
const endTime = (this.stateData.status === StateData.Statuses.Completed)
? new Date().getTime()
: undefined;
this.stateData.setData('restore', {
storageClass,
expiredAt,
startTime,
endTime,
});
return this.stateData.toJSON();
}