parent
ee8eba4c11
commit
b1b667f4e0
30
REST/app.py
30
REST/app.py
|
@ -1,14 +1,16 @@
|
|||
import subprocess
|
||||
import json
|
||||
import time
|
||||
from flask import Flask, request, jsonify, session
|
||||
from flask import Flask, request, jsonify
|
||||
from I2C_Function import analyze_data, read_data
|
||||
from flask_cors import CORS
|
||||
from threading import Lock
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
|
||||
initialized = False
|
||||
lock = Lock() # Sperre (Lock) für die analyze_data-Methode
|
||||
|
||||
def create_response(status_code, description):
|
||||
return jsonify({
|
||||
|
@ -20,6 +22,10 @@ def create_response(status_code, description):
|
|||
def initialize_generator():
|
||||
global initialized
|
||||
|
||||
if initialized:
|
||||
return create_response(200, 'System is already initialised, random numbers can be requested')
|
||||
|
||||
with lock: # Sperre (Lock) verwenden, um sicherzustellen, dass nur ein Thread die Methode ausführt
|
||||
result = analyze_data(int(1), int(1), startup=True)
|
||||
|
||||
if result is True:
|
||||
|
@ -36,22 +42,26 @@ def initialize_generator():
|
|||
@app.route('/trng/randomNum/getRandom', methods=['GET'])
|
||||
def get_random_numbers():
|
||||
global initialized
|
||||
quantity = request.args.get('quantity')
|
||||
bits = request.args.get('numBits')
|
||||
quantity = request.args.get('quantity', default=1)
|
||||
bits = request.args.get('numBits', default=1)
|
||||
|
||||
if not quantity.isdigit() or not bits.isdigit():
|
||||
try:
|
||||
quantity = int(quantity)
|
||||
bits = int(bits)
|
||||
except ValueError:
|
||||
return create_response(400, 'Invalid input. Quantity and bits must be numeric')
|
||||
|
||||
if int(quantity) <= 0 or int(bits) <= 0:
|
||||
if quantity <= 0 or bits <= 0:
|
||||
return create_response(400, 'Invalid input. Quantity and bits must be positive integers')
|
||||
|
||||
if not initialized:
|
||||
return create_response(432, 'System not ready; try init')
|
||||
|
||||
random_numbers = analyze_data(int(quantity), int(bits), startup=False)
|
||||
with lock: # Sperre (Lock) verwenden, um sicherzustellen, dass nur ein Thread die Methode ausführt
|
||||
random_numbers = analyze_data(quantity, bits, startup=False)
|
||||
|
||||
if random_numbers == 400:
|
||||
return create_response(500, 'Tests failed, try again')
|
||||
return create_response(543, 'Tests failed, try again')
|
||||
if random_numbers is False:
|
||||
return create_response(500, 'Unable to generate random numbers. Restart/Reset System')
|
||||
if random_numbers:
|
||||
|
@ -72,6 +82,12 @@ def shutdown_generator():
|
|||
|
||||
return create_response(200, "Successful operation; random number generator has been set to 'standby mode'")
|
||||
|
||||
# Fehlerbehandlungsroutine für nicht übereinstimmende Routen
|
||||
@app.route('/', defaults={'path': ''})
|
||||
@app.route('/<path:path>')
|
||||
def handle_invalid_routes(path):
|
||||
return create_response(404, 'Route not found')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
# Pfade zu den SSL-Zertifikat- und Schlüsseldateien
|
||||
|
|
Loading…
Reference in New Issue