Update app.py
Browse files
app.py
CHANGED
|
@@ -935,6 +935,53 @@ def send_get_request():
|
|
| 935 |
|
| 936 |
|
| 937 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 938 |
|
| 939 |
|
| 940 |
|
|
|
|
| 935 |
|
| 936 |
|
| 937 |
|
| 938 |
+
@app.route('/webhookbz', methods=['POST'])
|
| 939 |
+
def data_gc_tab():
|
| 940 |
+
api_sys_control = request.args.get('api_sys')
|
| 941 |
+
if api_sys_control != api_key_sys:
|
| 942 |
+
return "EUR 22", 200
|
| 943 |
+
|
| 944 |
+
data = request.json
|
| 945 |
+
webinar_id = data.get('webinarId')
|
| 946 |
+
|
| 947 |
+
if not webinar_id:
|
| 948 |
+
return jsonify({'error': 'webinarId is required'}), 400
|
| 949 |
+
|
| 950 |
+
url = f'https://online.bizon365.ru/api/v1/webinars/reports/get?webinarId={webinar_id}'
|
| 951 |
+
response = requests.get(url, headers={'X-Token': api_key_sys})
|
| 952 |
+
|
| 953 |
+
if response.status_code == 200:
|
| 954 |
+
data = response.json()
|
| 955 |
+
|
| 956 |
+
report = data.get('report', {})
|
| 957 |
+
messages = data.get('messages', {})
|
| 958 |
+
|
| 959 |
+
report_json_str = report.get('report', '{}')
|
| 960 |
+
try:
|
| 961 |
+
report_json = json.loads(report_json_str)
|
| 962 |
+
except json.JSONDecodeError:
|
| 963 |
+
report_json = {}
|
| 964 |
+
|
| 965 |
+
messages_json_str = report.get('messages', '{}')
|
| 966 |
+
try:
|
| 967 |
+
messages_json = json.loads(messages_json_str)
|
| 968 |
+
except json.JSONDecodeError:
|
| 969 |
+
messages_json = {}
|
| 970 |
+
|
| 971 |
+
users_meta = report_json.get('usersMeta', {})
|
| 972 |
+
|
| 973 |
+
processed_emails = set()
|
| 974 |
+
for user_id, user_data in users_meta.items():
|
| 975 |
+
user_messages = messages_json.get(user_id, [])
|
| 976 |
+
user_data['messages'] = user_messages
|
| 977 |
+
email = user_data.get('email')
|
| 978 |
+
if email and email not in processed_emails:
|
| 979 |
+
update_or_insert_user(DATABASE_NAME, user_data, mapping_template)
|
| 980 |
+
processed_emails.add(email)
|
| 981 |
+
|
| 982 |
+
return jsonify({'status': 'User data saved successfully'})
|
| 983 |
+
else:
|
| 984 |
+
return jsonify({'error': 'Failed to fetch data from the API'}), response.status_code
|
| 985 |
|
| 986 |
|
| 987 |
|