ping_server/ping_server.py (30 lines of code) (raw):
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import json
import os
import zlib
from flask import Flask, request
from flask.json import jsonify
app = Flask("ping_server")
PINGS = []
@app.route("/pings", methods=["GET", "DELETE"])
def pings():
if request.method == "GET":
return jsonify(PINGS)
if request.method == "DELETE":
PINGS.clear()
return ""
@app.route(
"/submit/<path:telemetry>",
methods=["POST"],
)
def submit(telemetry):
if request.method == "POST":
request_data = request.get_data()
if request.headers.get("Content-Encoding") == "gzip":
request_data = zlib.decompress(request_data, zlib.MAX_WBITS | 16)
ping_data = json.loads(request_data)
# Store JSON data to self.pings to be used by wait_for_pings()
PINGS.append(ping_data)
return ""
return ""
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host="0.0.0.0", port=port)