Fixed all endpoints to return proper headers, and properly formatted for json

This commit is contained in:
Ubergeek 2020-01-25 13:10:04 -05:00
parent 8cf38a0f53
commit 6b041a8af7
1 changed files with 22 additions and 18 deletions

View File

@ -5,7 +5,7 @@ import flask
from flask import Flask, request, jsonify from flask import Flask, request, jsonify
import psutil, datetime, time, socket import psutil, datetime, time, socket, json
app = Flask(__name__) app = Flask(__name__)
@ -14,13 +14,16 @@ app = Flask(__name__)
# No endpoint selected # No endpoint selected
@app.route("/") @app.route("/")
def home(): def home():
return "The Thunix API. Please see https://wiki.thunix.net/wiki/api for more information." print ("Content-Type: application/json\n")
payload = [{"Description":"The Thunix API. Please see https://wiki.thunix.net/wiki/api for more information."}]
return jsonify(payload)
app.run() app.run()
# ip_info # ip_info
@app.route("/ip_info") @app.route("/ip_info")
def ip_info(): def ip_info():
print ("Content-Type: application/json\n")
def get_ip_addresses(family): def get_ip_addresses(family):
for interface, snics in psutil.net_if_addrs().items(): for interface, snics in psutil.net_if_addrs().items():
for snic in snics: for snic in snics:
@ -30,29 +33,30 @@ def ip_info():
ipv4s = list(get_ip_addresses(socket.AF_INET)) ipv4s = list(get_ip_addresses(socket.AF_INET))
json_payload = "{\n\t\"Interfaces\":[\n" payload = "{\"Interfaces\":["
i = 0 i = 0
for i in range(len(ipv4s)) : for i in range(len(ipv4s)) :
json_payload = json_payload + "\t\t{\n" payload = payload + "{"
json_payload = json_payload + "\t\t\t\"Interface\":" + "\"" + ipv4s[i][0] + "\",\n" payload = payload + '"Interface":' + '"' + ipv4s[i][0] + '",'
json_payload = json_payload + "\t\t\t\"Address\":" + "\"" + ipv4s[i][1] + "\",\n" payload = payload + '"Address":' + '"' + ipv4s[i][1] + '",'
json_payload = json_payload + "\t\t\t\"Netmask\":" + "\"" + ipv4s[i][2] + "\"\n" payload = payload + '"Netmask":' + '"' + ipv4s[i][2] + '"'
json_payload = json_payload + "\t\t}" payload = payload + "}"
i = i + 1 i = i + 1
if (i < len(ipv4s)) : if (i < len(ipv4s)) :
json_payload = json_payload + ",\n" payload = payload + ","
else: else:
json_payload = json_payload + "\n" payload = payload + ""
json_payload = json_payload + "\t]\n" payload = payload + "]"
json_payload = json_payload + "}\n" payload = payload + "}"
payload = json.loads(payload)
return json_payload return jsonify(payload)
app.run() app.run()
# uptime # uptime
@app.route("/uptime") @app.route("/uptime")
def uptime(): def uptime():
print ("Content-Type: application/json\n")
with open('/proc/uptime', 'r') as f: with open('/proc/uptime', 'r') as f:
secs = float(f.readline().split()[0]) secs = float(f.readline().split()[0])
day = secs // (24 * 3600) day = secs // (24 * 3600)
@ -77,17 +81,17 @@ def uptime():
# load avg # load avg
@app.route("/load") @app.route("/load")
def loadaverage(): def loadaverage():
print ("Content-Type: application/json\n")
loadavg = psutil.getloadavg() loadavg = psutil.getloadavg()
json_payload=[{"1min":loadavg[0], "5min":loadavg[1], "10min":loadavg[2]}] payload=[{"1min":loadavg[0], "5min":loadavg[1], "10min":loadavg[2]}]
return jsonify(json_payload) return jsonify(payload)
app.run() app.run()
# teapot # teapot
@app.route("/teapot") @app.route("/teapot")
def teapot(): def teapot():
print ("Content-Type: application/json\n")
teapots = [ teapots = [
{ {
"tea": "available", "tea": "available",