diff --git a/webhooks/middleware/protocols/crop_plate.py b/webhooks/middleware/protocols/crop_plate.py index f08c40d..ab5d490 100644 --- a/webhooks/middleware/protocols/crop_plate.py +++ b/webhooks/middleware/protocols/crop_plate.py @@ -1,4 +1,5 @@ import json +import logging import os from io import BytesIO from typing import Any @@ -6,6 +7,10 @@ import requests from PIL import Image +logging.basicConfig( + level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" +) + def crop_image(image_data, crop_box): image = Image.open(BytesIO(image_data)) @@ -19,9 +24,11 @@ def process_request( json_data: dict[str, Any], upload_file: bytes | None = None ) -> tuple[str, int]: if not upload_file: + logging.error("No file uploaded.") return "No file uploaded.", 400 data = json_data["data"]["results"][0] + plate = data.get("plate") plate_bounding_box = data.get("box") or data["vehicle"]["box"] crop_box = ( @@ -38,9 +45,11 @@ def process_request( } data = {"json": json.dumps(json_data)} - response = requests.post(os.getenv("WEBHOOK_URL", ""), data=data, files=files) - - if response.status_code == 200: - return "Webhook request sent successfully.", response.status_code - else: - return "Webhook request failed.", response.status_code + try: + response = requests.post(os.getenv("WEBHOOK_URL", ""), data=data, files=files) + response.raise_for_status() + logging.info(f"Vehicle: {plate}. Request was successful.") + return "Request was successful", response.status_code + except requests.exceptions.RequestException as err: + logging.error(f"Vehicle: {plate}. Error processing the request: {err}") + return f"Failed to process the request: {err}", response.status_code diff --git a/webhooks/middleware/protocols/nx.py b/webhooks/middleware/protocols/nx.py index c26013f..5a7c402 100644 --- a/webhooks/middleware/protocols/nx.py +++ b/webhooks/middleware/protocols/nx.py @@ -145,10 +145,10 @@ def process_request( try: response = session.post(url, json=payload, headers=headers, verify=ssl) response.raise_for_status() - logging.info("Request was successful.") + logging.info(f"Vehicle: {plate}. Request was successful.") return "Request was successful", response.status_code except requests.exceptions.RequestException as err: - logging.error(f"Error processing the request: {err}") + logging.error(f"Vehicle: {plate}.Error processing the request: {err}") return f"Failed to process the request: {err}", 400 diff --git a/webhooks/middleware/protocols/openeye.py b/webhooks/middleware/protocols/openeye.py index a7ac8f9..414ce4c 100644 --- a/webhooks/middleware/protocols/openeye.py +++ b/webhooks/middleware/protocols/openeye.py @@ -1,10 +1,15 @@ import json +import logging import os from datetime import datetime from typing import Any import requests +logging.basicConfig( + level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" +) + def convert_to_timestamp_microseconds(time_string): datetime_object = datetime.strptime(time_string, "%Y-%m-%dT%H:%M:%S.%fZ") @@ -64,7 +69,10 @@ def process_request( try: response = requests.post(url, headers=headers, data=payload) response.raise_for_status() + logging.info( + f"Vehicle:{plate}, URL:{url}. Response sent successfully with status code: {response.status_code}" + ) return "Request sent successfully.", response.status_code except requests.exceptions.HTTPError as err: - print(err) + logging.error(f"Vehicle:{plate}, URL:{url}. Failed to send request: {err}") return f"Failed to send request: {err}", 400 diff --git a/webhooks/middleware/protocols/salient.py b/webhooks/middleware/protocols/salient.py index 59922b4..2584ab5 100644 --- a/webhooks/middleware/protocols/salient.py +++ b/webhooks/middleware/protocols/salient.py @@ -35,13 +35,13 @@ def notify_salient( ) res.raise_for_status() except requests.exceptions.HTTPError as errh: - lgr.error("Http Error:", errh) + lgr.error(f"Vehicle: {description}. Http Error:", errh) except requests.exceptions.ConnectionError as errc: - lgr.error("Error Connecting:", errc) + lgr.error(f"Vehicle: {description}. Error Connecting:", errc) except requests.exceptions.Timeout as errt: - lgr.error("Timeout Error:", errt) + lgr.error(f"Vehicle: {description}. Timeout Error:", errt) except requests.exceptions.RequestException as err: - lgr.error("Oops: Something Else", err) + lgr.error(f"Vehicle: {description}. Oops: Something Else", err) def process_request( @@ -68,7 +68,9 @@ def process_request( notify_salient( username, password, vms_api_url, camera_uid, camera_id, plate, timestamp ) + logging.info(f"Vehicle: {plate}. Notified Salient successfully.") except Exception as e: + logging.error(f"Vehicle: {plate}. Failed to notify Salient: {e}") return f"Failed to notify Salient: {e}", 400 return "OK", 200 diff --git a/webhooks/middleware/protocols/soap.py b/webhooks/middleware/protocols/soap.py index dee4933..698b31a 100644 --- a/webhooks/middleware/protocols/soap.py +++ b/webhooks/middleware/protocols/soap.py @@ -1,10 +1,15 @@ import base64 +import logging import os from datetime import datetime from typing import Any from zeep import Client, Transport +logging.basicConfig( + level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" +) + def forward_to_SOAP_service(json_data, image): # Retrieve environment variables for the SOAP service @@ -43,8 +48,10 @@ def forward_to_SOAP_service(json_data, image): response = client.service.PostImage(**request_data) if response: + logging.info(f"Vehicle: {plate}. SOAP request successful.") return "SOAP request successful.", 200 else: + logging.error(f"Vehicle: {plate}. SOAP request failed. Response: {response}") return "SOAP request failed.", 400 diff --git a/webhooks/middleware/protocols/synology_rest.py b/webhooks/middleware/protocols/synology_rest.py index 02c10bd..feab387 100644 --- a/webhooks/middleware/protocols/synology_rest.py +++ b/webhooks/middleware/protocols/synology_rest.py @@ -1,3 +1,4 @@ +import logging import os from typing import Any from urllib import parse @@ -5,6 +6,10 @@ import dateutil.parser as dp import requests +logging.basicConfig( + level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" +) + def process_request( json_data: dict[str, Any], upload_file: bytes | None = None @@ -20,6 +25,7 @@ def process_request( parsed_date_time = dp.parse(timestamp) timestamp = str(int(parsed_date_time.timestamp())) except ValueError: + logging.error(f"Vehicle: {plate}. Invalid timestamp format.") return "Invalid timestamp format.", 400 request_data = { @@ -33,8 +39,12 @@ def process_request( response = requests.post(url=url, headers=HEADERS, data=data, verify=False) if response.status_code == 200: + logging.info(f"Vehicle: {plate}. REST request successful.") return "REST request successful.", response.status_code else: + logging.error( + f"Vehicle: {plate}. REST request failed. Response code: {response.status_code}" + ) return ( f"REST request failed. Response code: {response.status_code}", response.status_code,