GPSMultiplexer/multiplexer.py
Kevin Alberts e20e3bf40a
All checks were successful
continuous-integration/drone/push Build is passing
Fix posting points
2025-07-15 14:29:55 +02:00

83 lines
2.4 KiB
Python

from flask import Flask, request, jsonify
from logging.config import dictConfig
import requests
import os
dictConfig({
'version': 1,
'formatters': {'default': {
'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
}},
'handlers': {'stderr': {
'class': 'logging.StreamHandler',
'stream': 'ext://sys.stderr',
'formatter': 'default'
}},
'root': {
'level': 'INFO',
'handlers': ['stderr']
}
})
app = Flask(__name__)
REITTI_BASE_URL = os.getenv("REITTI_BASE_URL", None)
REITTI_API_KEY = os.getenv("REITTI_API_KEY", None)
DAWARICH_BASE_URL = os.getenv("DAWARICH_BASE_URL", None)
DAWARICH_API_KEY = os.getenv("DAWARICH_API_KEY", None)
@app.route('/')
def index():
return "OK"
@app.route('/ingest', methods=['POST'])
def ingest_request():
data = request.get_json()
errors = []
try:
if REITTI_BASE_URL is None or REITTI_API_KEY is None:
raise ValueError("Reitti API URL or Key is not configured!")
response1 = requests.post(
f"{REITTI_BASE_URL}/api/v1/ingest/owntracks",
json=data,
headers={'Content-Type': 'application/json'},
params={'token': REITTI_API_KEY}
)
app.logger.info(f'Forwarded point to Reitti: {response1.status_code} - Body: {response1.content}')
except Exception as e:
app.logger.error(f'Error forwarding request to Reitti: {str(e)}')
errors.append({'service': 'reitti', 'status': 'error', 'message': str(e)})
try:
if DAWARICH_BASE_URL is None or DAWARICH_API_KEY is None:
raise ValueError("Dawarich API URL or Key is not configured!")
response2 = requests.post(
f"{DAWARICH_BASE_URL}/api/v1/owntracks/points",
json=data,
headers={'Content-Type': 'application/json'},
params={'api_key': DAWARICH_API_KEY}
)
app.logger.info(f'Forwarded point to Dawarich: {response2.status_code} - Body: {response2.content}')
except Exception as e:
app.logger.error(f'Error forwarding request to Dawarich: {str(e)}')
errors.append({'service': 'dawarich', 'status': 'error', 'message': str(e)})
return jsonify(errors), 500
return jsonify({'status': 'success'}), 200
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)