Path: blob/master/webhooks/multiple_parkpow.py
1082 views
"""12Script designed to use multiple Parkpow's, from different data sources using a single Snapshot based on Camera_Id.34instructions:56python3 file_name.py78"""910import json11import logging1213import requests14from flask import Flask, jsonify, request1516logging.basicConfig(17format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO18)1920app = Flask(__name__)2122set_parkpow = {23"camera1": {24"url": "http://localhost:8000/api/v1/webhook-receiver/",25"token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",26},27"camera2": {28"url": "http://localhost:8001/api/v1/webhook-receiver/",29"token": "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY",30},31# Add more Parkpow´s and their information here32# Camera1 and Camra2 represent the camera_id that is sent in the initial request33}343536@app.route("/", methods=["GET", "POST"])37def handle_event():38if request.method == "GET":39return jsonify({"error": "Method not allowed"}), 40540else:41if "upload" not in request.files:42return jsonify({"error": "No file uploaded"}), 4004344file = request.files["upload"]4546if not file:47return jsonify({"error": "Empty file uploaded"}), 4004849filename = file.filename5051original_data = request.form["json"]5253json_data = json.loads(original_data)5455camera_id = json_data["data"]["camera_id"]5657if not camera_id:58return jsonify({"error": "Camera_id not submitted"}), 4005960if camera_id not in set_parkpow:61logging.error("camera_id not found in set_parkpow")62return jsonify({"error": "camera_id not found in set_parkpow"}), 4006364headers = {65"Authorization": f"Token {set_parkpow[camera_id]['token']}",66"Content-Type": None,67}6869try:70response = requests.post(71set_parkpow[camera_id]["url"],72headers=headers,73files={"upload": (filename, file.read())},74data={"json": original_data},75)7677response.raise_for_status()7879return response.content, response.status_code8081except requests.exceptions.HTTPError as err:82logging.error(err)83return (84jsonify({"error": "An error occurred in the request"}),85err.response.status_code,86)878889if __name__ == "__main__":90app.run(host="0.0.0.0", port=8181)919293