Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
parkpow
GitHub Repository: parkpow/deep-license-plate-recognition
Path: blob/master/webhooks/multiple_parkpow.py
1082 views
1
"""
2
3
Script designed to use multiple Parkpow's, from different data sources using a single Snapshot based on Camera_Id.
4
5
instructions:
6
7
python3 file_name.py
8
9
"""
10
11
import json
12
import logging
13
14
import requests
15
from flask import Flask, jsonify, request
16
17
logging.basicConfig(
18
format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO
19
)
20
21
app = Flask(__name__)
22
23
set_parkpow = {
24
"camera1": {
25
"url": "http://localhost:8000/api/v1/webhook-receiver/",
26
"token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
27
},
28
"camera2": {
29
"url": "http://localhost:8001/api/v1/webhook-receiver/",
30
"token": "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY",
31
},
32
# Add more Parkpow´s and their information here
33
# Camera1 and Camra2 represent the camera_id that is sent in the initial request
34
}
35
36
37
@app.route("/", methods=["GET", "POST"])
38
def handle_event():
39
if request.method == "GET":
40
return jsonify({"error": "Method not allowed"}), 405
41
else:
42
if "upload" not in request.files:
43
return jsonify({"error": "No file uploaded"}), 400
44
45
file = request.files["upload"]
46
47
if not file:
48
return jsonify({"error": "Empty file uploaded"}), 400
49
50
filename = file.filename
51
52
original_data = request.form["json"]
53
54
json_data = json.loads(original_data)
55
56
camera_id = json_data["data"]["camera_id"]
57
58
if not camera_id:
59
return jsonify({"error": "Camera_id not submitted"}), 400
60
61
if camera_id not in set_parkpow:
62
logging.error("camera_id not found in set_parkpow")
63
return jsonify({"error": "camera_id not found in set_parkpow"}), 400
64
65
headers = {
66
"Authorization": f"Token {set_parkpow[camera_id]['token']}",
67
"Content-Type": None,
68
}
69
70
try:
71
response = requests.post(
72
set_parkpow[camera_id]["url"],
73
headers=headers,
74
files={"upload": (filename, file.read())},
75
data={"json": original_data},
76
)
77
78
response.raise_for_status()
79
80
return response.content, response.status_code
81
82
except requests.exceptions.HTTPError as err:
83
logging.error(err)
84
return (
85
jsonify({"error": "An error occurred in the request"}),
86
err.response.status_code,
87
)
88
89
90
if __name__ == "__main__":
91
app.run(host="0.0.0.0", port=8181)
92
93