Initial code

This commit is contained in:
Kevin Alberts 2025-07-15 13:46:48 +02:00
parent f628266c2a
commit 3519df4299
5 changed files with 114 additions and 0 deletions

20
Dockerfile Normal file
View file

@ -0,0 +1,20 @@
# Then build the actual amelie docker image
FROM python:latest
# Set /usr/src/app as startup working directory
WORKDIR /usr/src/app
# Install python requirements
COPY requirements.txt ./
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
# Copy sources
COPY . .
# Expose the web port
EXPOSE 8000
# Start the website
CMD ["/usr/src/app/start.sh"]

25
http_test_server.py Normal file
View file

@ -0,0 +1,25 @@
from http.server import BaseHTTPRequestHandler, HTTPServer
import os
PORT = int(os.getenv("PORT", "8000"))
class handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
message = "Hello, World! Here is a GET response"
self.wfile.write(bytes(message, "utf8"))
def do_POST(self):
self.send_response(200)
self.send_header('Content-type','application/json')
self.end_headers()
message = "{\"hello\": \"response\"}"
self.wfile.write(bytes(message, "utf8"))
with HTTPServer(('', PORT), handler) as server:
server.serve_forever()

64
multiplexer.py Normal file
View file

@ -0,0 +1,64 @@
from flask import Flask, request, jsonify
import requests
import os
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(
REITTI_BASE_URL,
'http://service1.com/api',
json=data,
headers=request.headers,
params={'api_key': REITTI_API_KEY}
)
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(
DAWARICH_BASE_URL,
json=data,
headers=request.headers,
params={'api_key': DAWARICH_API_KEY}
)
return jsonify({'status': 'success'}), 200
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
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)

2
requirements.txt Normal file
View file

@ -0,0 +1,2 @@
requests
Flask

3
start.sh Normal file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
python ./multiplexer.py