All checks were successful
continuous-integration/drone/push Build is passing
83 lines
2.4 KiB
Python
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)
|
|
|