@@ -20,6 +20,8 @@ const STORAGE_CLASS_STANDARD = 'STANDARD';
2020const STORAGE_CLASS_GLACIER = 'GLACIER' ; // "S3 Glacier Flexible Retrieval"
2121/** @type {nb.StorageClass } */
2222const STORAGE_CLASS_GLACIER_IR = 'GLACIER_IR' ; // "S3 Glacier Instant Retrieval"
23+ /** @type {nb.StorageClass } */
24+ const STORAGE_CLASS_GLACIER_DA = 'GLACIER_DA' ; // "DBS3 specific Storage Class"
2325
2426const DEFAULT_S3_USER = Object . freeze ( {
2527 ID : '123' ,
@@ -382,6 +384,7 @@ function parse_storage_class(storage_class) {
382384 if ( ! storage_class ) return STORAGE_CLASS_STANDARD ;
383385 if ( storage_class === STORAGE_CLASS_STANDARD ) return STORAGE_CLASS_STANDARD ;
384386 if ( storage_class === STORAGE_CLASS_GLACIER ) return STORAGE_CLASS_GLACIER ;
387+ if ( storage_class === STORAGE_CLASS_GLACIER_DA ) return STORAGE_CLASS_GLACIER_DA ;
385388 if ( storage_class === STORAGE_CLASS_GLACIER_IR ) return STORAGE_CLASS_GLACIER_IR ;
386389 throw new Error ( `No such s3 storage class ${ storage_class } ` ) ;
387390}
@@ -819,9 +822,19 @@ function parse_body_public_access_block(req) {
819822 return parsed ;
820823}
821824
825+ function override_storage_class ( req ) {
826+ if (
827+ config . NSFS_GLACIER_FORCE_STORAGE_CLASS &&
828+ parse_storage_class_header ( req ) === STORAGE_CLASS_STANDARD
829+ ) {
830+ req . headers [ 'x-amz-storage-class' ] = STORAGE_CLASS_GLACIER ;
831+ }
832+ }
833+
822834exports . STORAGE_CLASS_STANDARD = STORAGE_CLASS_STANDARD ;
823835exports . STORAGE_CLASS_GLACIER = STORAGE_CLASS_GLACIER ;
824836exports . STORAGE_CLASS_GLACIER_IR = STORAGE_CLASS_GLACIER_IR ;
837+ exports . STORAGE_CLASS_GLACIER_DA = STORAGE_CLASS_GLACIER_DA ;
825838exports . DEFAULT_S3_USER = DEFAULT_S3_USER ;
826839exports . DEFAULT_OBJECT_ACL = DEFAULT_OBJECT_ACL ;
827840exports . decode_chunked_upload = decode_chunked_upload ;
@@ -863,5 +876,6 @@ exports.key_marker_to_cont_tok = key_marker_to_cont_tok;
863876exports . parse_sse_c = parse_sse_c ;
864877exports . verify_string_byte_length = verify_string_byte_length ;
865878exports . parse_body_public_access_block = parse_body_public_access_block ;
879+ exports . override_storage_class = override_storage_class ;
866880exports . OBJECT_ATTRIBUTES = OBJECT_ATTRIBUTES ;
867881exports . OBJECT_ATTRIBUTES_UNSUPPORTED = OBJECT_ATTRIBUTES_UNSUPPORTED ;
0 commit comments