|
2 | 2 | Functions for completing file-level validation |
3 | 3 | (validating headers and ensuring that the supplier has permission to perform at least one of the requested operations) |
4 | 4 | """ |
| 5 | +from curses import error |
5 | 6 | from clients import logger, s3_client |
6 | 7 | from make_and_upload_ack_file import make_and_upload_ack_file |
7 | 8 | from utils_for_recordprocessor import get_csv_content_dict_reader, invoke_filename_lambda |
@@ -79,9 +80,17 @@ def file_level_validation(incoming_message_body: dict) -> dict: |
79 | 80 | encoder = incoming_message_body.get("encoder", "utf-8") |
80 | 81 |
|
81 | 82 | # Fetch the data |
82 | | - csv_reader = get_csv_content_dict_reader(file_key, encoder=encoder) |
83 | | - |
84 | | - validate_content_headers(csv_reader) |
| 83 | + try: |
| 84 | + csv_reader = get_csv_content_dict_reader(file_key, encoder=encoder) |
| 85 | + validate_content_headers(csv_reader) |
| 86 | + except Exception as e: |
| 87 | + if hasattr(e, 'reason') and e.reason == "invalid continuation byte" and encoder == "utf-8": |
| 88 | + logger.warning("Invalid Encoding detected: %s", e) |
| 89 | + # retry with cp1252 encoding |
| 90 | + csv_reader = get_csv_content_dict_reader(file_key, encoder="cp1252") |
| 91 | + validate_content_headers(csv_reader) |
| 92 | + else: |
| 93 | + raise |
85 | 94 |
|
86 | 95 | # Validate has permission to perform at least one of the requested actions |
87 | 96 | allowed_operations_set = get_permitted_operations(supplier, vaccine, permission) |
|
0 commit comments