[SIS-xxx] refactoring rest api to use a common code base

This commit is contained in:
Sheldan
2023-12-19 01:26:27 +01:00
parent 3b498c5d3f
commit 4128274a7d
10 changed files with 854 additions and 875 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
#!/bin/sh
echo "Starting python server..."
cd python && python3 -u main.py
cd python
python3 -u main.py

View File

@@ -18,7 +18,7 @@
<properties>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<abstracto.version>1.5.14</abstracto.version>
<abstracto.version>1.5.15-SNAPSHOT</abstracto.version>
<abstracto.templates.version>1.4.25</abstracto.templates.version>
<apache-jena.version>4.9.0</apache-jena.version>
<rssreader.version>3.5.0</rssreader.version>

View File

@@ -1,19 +0,0 @@
from __main__ import app
from PIL import Image, ImageDraw, ImageFont
from flask import request
from utils import serve_pil_image
@app.route('/memes/doge/orangeSun/')
def image_gen():
text = request.args.get('text')
with Image.open('res/img/semf_template.jpg') as im:
d1 = ImageDraw.Draw(im)
text_box_size = (300, 240)
W, H = text_box_size
font = ImageFont.truetype(f'Impact.ttf', 60)
_, _, w, h = d1.textbbox((0, 0), text, font=font)
d1.text(((W-w)/2 + 320, (H-h)/2 + 120), text, font=font, fill=(255, 255, 255))
return serve_pil_image(im)

View File

@@ -1,23 +0,0 @@
import logging
import os
from flask import Flask
FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
logging.basicConfig(encoding='utf-8', level=logging.INFO, format=FORMAT)
template_dir = os.path.abspath('res/templates')
app = Flask(__name__, template_folder=template_dir)
# loads the api end points
import debra
import image_gen
@app.route('/')
def hello():
return 'Hello, World?'
if __name__ == "__main__":
from waitress import serve
serve(app, host="0.0.0.0", port=8080)

View File

@@ -6,7 +6,7 @@ import json
import logging
import uuid
from __main__ import app
from utils import serve_pil_image
from utils import flask_utils
from datetime import timezone, datetime
import pytz
@@ -130,7 +130,7 @@ def total_donations_image():
d1 = ImageDraw.Draw(img)
font = ImageFont.truetype(f'{parameters.font_name}.ttf', parameters.font_size)
d1.text((0, 0), f"{campaign_info['collected']}/{campaign_info['target']}", fill=parameters.color, font=font)
return serve_pil_image(img)
return flask_utils.serve_pil_image(img)
@app.route('/debra/image/endlessStream/end')
@@ -148,7 +148,7 @@ def endless_stream_image():
tz = pytz.timezone('Europe/Vienna')
end_time_formatted = end_time.astimezone(tz).strftime('%d.%m %H:%M')
d1.text((0, 0), f"{end_time_formatted}", fill=parameters.color, font=font)
return serve_pil_image(img)
return flask_utils.serve_pil_image(img)
@app.route('/debra/image/endlessStream/end/html')
@@ -176,7 +176,7 @@ def endless_stream_remaining():
total_seconds = remaining_time.total_seconds()
remaining_time_formatted = f'{int(total_seconds // 3600):02d}:{int((total_seconds % 3600) // 60):02d}:{int(total_seconds % 60):02d}'
d1.text((0, 0), f"{remaining_time_formatted}", fill=parameters.color, font=font)
return serve_pil_image(img)
return flask_utils.serve_pil_image(img)
@app.route('/debra/image/endlessStream/remaining/html')
@@ -242,7 +242,7 @@ def rendering_donation_image(donation_stats, parameters):
name = donation['firstName'] if not donation['anonymous'] else 'anonym'
d1.text((0, height * it), f"{donation['donationAmount']}€ von {name}", fill=parameters.color, font=font)
it += 1
return serve_pil_image(img)
return flask_utils.serve_pil_image(img)
def parse_image_parameters() -> DonationImageGenerationParameters:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,7 +0,0 @@
<meta http-equiv="refresh" content="{{ refreshInterval }}">
<html>
<head></head>
<body>
<img src="{{ imagePath }}">
</body>
</html>

View File

@@ -0,0 +1,8 @@
<html>
<head>
<meta http-equiv="refresh" content="{{ refreshInterval }}">
</head>
<body>
<img src="{{ imagePath }}">
</body>
</html>

View File

@@ -1,17 +0,0 @@
from io import BytesIO
from flask import send_file
def serve_pil_image(pil_img):
img_io = BytesIO()
pil_img.save(img_io, 'PNG')
img_io.seek(0)
return send_file(img_io, mimetype='image/png')
class ValidationException(Exception):
def __init__(self, provided_value, message):
self.provided_value = provided_value
self.message = message
super().__init__(f'{self.message}: provided value: {provided_value}')