|
21 | 21 | FileNotProcessedReason, |
22 | 22 | FileStatus, |
23 | 23 | ) |
24 | | -from file_validation import is_file_in_directory_root, validate_file_key |
| 24 | +from file_validation import is_file_in_directory_root, validate_batch_file_key, validate_extended_attributes_file_key |
25 | 25 | from make_and_upload_ack_file import make_and_upload_the_ack_file |
26 | 26 | from models.errors import ( |
27 | 27 | InvalidFileKeyError, |
@@ -77,10 +77,12 @@ def handle_record(record) -> dict: |
77 | 77 | message_id = str(uuid4()) |
78 | 78 | s3_response = get_s3_client().get_object(Bucket=bucket_name, Key=file_key) |
79 | 79 | created_at_formatted_string, expiry_timestamp = get_creation_and_expiry_times(s3_response) |
| 80 | + |
80 | 81 | if file_key.startswith(EXTENDED_ATTRIBUTES_PREFIXES): |
81 | | - pass |
| 82 | + validate_extended_attributes_file_key(file_key) |
| 83 | + move_file(bucket_name, file_key, f"archive/{file_key}") |
82 | 84 | else: |
83 | | - vaccine_type, supplier = validate_file_key(file_key) |
| 85 | + vaccine_type, supplier = validate_batch_file_key(file_key) |
84 | 86 |
|
85 | 87 | permissions = validate_vaccine_type_permissions(vaccine_type=vaccine_type, supplier=supplier) |
86 | 88 | queue_name = f"{supplier}_{vaccine_type}" |
@@ -166,21 +168,37 @@ def handle_unexpected_bucket_name(bucket_name: str, file_key: str) -> dict: |
166 | 168 | """Handles scenario where Lambda was not invoked by the data-sources bucket. Should not occur due to terraform |
167 | 169 | config and overarching design""" |
168 | 170 | try: |
169 | | - vaccine_type, supplier = validate_file_key(file_key) |
170 | | - logger.error( |
171 | | - "Unable to process file %s due to unexpected bucket name %s", |
172 | | - file_key, |
173 | | - bucket_name, |
174 | | - ) |
175 | | - message = f"Failed to process file due to unexpected bucket name {bucket_name}" |
176 | | - |
177 | | - return { |
178 | | - "statusCode": 500, |
179 | | - "message": message, |
180 | | - "file_key": file_key, |
181 | | - "vaccine_type": vaccine_type, |
182 | | - "supplier": supplier, |
183 | | - } |
| 171 | + if file_key.startswith(EXTENDED_ATTRIBUTES_PREFIXES): |
| 172 | + validate_extended_attributes_file_key(file_key) |
| 173 | + logger.error( |
| 174 | + "Unable to process file %s due to unexpected bucket name %s", |
| 175 | + file_key, |
| 176 | + bucket_name, |
| 177 | + ) |
| 178 | + message = f"Failed to process file due to unexpected bucket name {bucket_name}" |
| 179 | + return { |
| 180 | + "statusCode": 500, |
| 181 | + "message": message, |
| 182 | + "file_key": file_key, |
| 183 | + "vaccine_type": "extended_attributes", |
| 184 | + "supplier": "unknown", |
| 185 | + } |
| 186 | + else: |
| 187 | + vaccine_type, supplier = validate_batch_file_key(file_key) |
| 188 | + logger.error( |
| 189 | + "Unable to process file %s due to unexpected bucket name %s", |
| 190 | + file_key, |
| 191 | + bucket_name, |
| 192 | + ) |
| 193 | + message = f"Failed to process file due to unexpected bucket name {bucket_name}" |
| 194 | + |
| 195 | + return { |
| 196 | + "statusCode": 500, |
| 197 | + "message": message, |
| 198 | + "file_key": file_key, |
| 199 | + "vaccine_type": vaccine_type, |
| 200 | + "supplier": supplier, |
| 201 | + } |
184 | 202 |
|
185 | 203 | except Exception as error: |
186 | 204 | logger.error( |
|
0 commit comments