diff --git a/microservice.py b/microservice.py index 9c8e49e..5e3a27a 100755 --- a/microservice.py +++ b/microservice.py @@ -23,7 +23,9 @@ def report(): --- responses: 200: - description: JSON + description: JSON with streams report. + 400: + description: JSON with error message. """ try: r = requests.get("http://localhost:9997/v1/paths/list") @@ -34,8 +36,8 @@ def report(): return jsonify(j) - except: - return "Shat the bed", 500 + except Exception as e: + return _error_message_json(e.message), 500 @app.route('/radio/report') @@ -62,24 +64,24 @@ def connect(radio): required: true responses: 200: - description: Successfully connected to a radio. + description: JSON with message successfully connected to a radio. 400: - description: No radio device by that name is available. + description: JSON with error message No radio device by that name is available. 500: - description: Failed to connect to radio. + description: JSON with error message failed to connect to radio. """ if radio in radios: - return "Radio device already connected", 400 + return _error_message_json("Radio device already connected"), 400 devices = [dict(device) for device in soapy.Device.enumerate()] for device in devices: if radio in device.values(): try: radios[radio] = Radio(radio, device) - return "", 200 + return jsonify("message","successfully connected radio"), 200 except Exception as e: radios.pop(radio) - return str(e), 500 + return _error_message_json(e.message), 500 return "Radio device not found", 400 @@ -104,9 +106,9 @@ def disconnect(radio): """ if radio in radios: radios.pop(radio) - return "", 200 + return jsonify("message","succesfully disconnected radio"), 200 else: - return "Radio not connected", 400 + return _error_message_json("Radio not connected"), 400 @app.route('/radio//configure/') def configure(radio, frequency): @@ -127,14 +129,14 @@ def configure(radio, frequency): required: true responses: 200: - description: JSON + description: JSON with radio configuration. 400: description: The specified radio is not connected. """ if radio in radios: return jsonify(radios[radio].configure(frequency)) else: - return "Radio not connected", 400 + return _error_message_json("Radio not connected"), 400 @app.route('/radio//start') def start_stream(radio): @@ -148,12 +150,17 @@ def start_stream(radio): in: path type: string required: true + responses: + 200: + description: JSON with message successful start of radio stream. + 400: + description: JSON with error message. """ try: radios[radio].start_stream() - return "", 200 + return jsonify("message","successfully started radio stream"), 200 except Exception as e: - return str(e), 400 + return _error_message_json(e.message), 400 @app.route('/radio//end') def end_stream(radio): @@ -165,12 +172,18 @@ def end_stream(radio): in: path type: string required: true + responses: + 200: + description: JSON with message successful termination of radio stream. + 400: + description: JSON with error message. """ try: radios[radio].end_stream() - return "", 200 + return jsonify("message","successfully ended radio stream"), 200 except Exception as e: - return str(e), 400 + error_message = {"error_message": e.message} + return _error_message_json(e.message), 400 @app.route('/radio//info') def radio_info(radio): @@ -184,14 +197,14 @@ def radio_info(radio): required: true responses: 200: - description: JSON + description: JSON with radio information. 400: - description: The specified radio is not connected. + description: JSON with error message. """ try: return jsonify(radios[radio].get_info()) except Exception as e: - return str(e), 400 + return _error_message_json(e.message), 400 tubes = {} @@ -214,15 +227,20 @@ def start_tuuube_stream(id): in: path type: string required: true + responses: + 200: + description: JSON with message successful start of youtube stream. + 400: + description: JSON with error message. """ if id not in tubes: tubes[id] = Tuuube(id) try: tubes[id].start_stream() - return "", 200 + return jsonify("message","successfully started youtube stream"), 200 except Exception as e: - return str(e), 400 + return _error_message_json(e.message), 400 @app.route('/tuuube//end') def end_tuuube_stream(id): @@ -234,15 +252,29 @@ def end_tuuube_stream(id): in: path type: string required: true + responses: + 200: + description: JSON with message successful termination of youtube stream. + 400: + description: JSON with error message. """ try: tubes[id].end_stream() - return "", 200 + return jsonify("message","succesfully ended youtube stream"), 200 except Exception as e: - return str(e), 400 + return _error_message_json(e.message), 400 +""" + Helper function to return a JSON error message + parameters: error_message - the error message to return + returns: a JSON object with the error message + """ +def _error_message_json(error_message:str): + error_message = {"error_message": error_message} + return jsonify(error_message) + if __name__ == '__main__': import subprocess