Um svg-badge ausgabe erweitert, steuerbar mit GET-Parameter ?format=svg|text

This commit is contained in:
Reik Kaps 2020-06-19 17:52:00 +02:00
parent 0c408b53c7
commit 46f6df8e2f

View File

@ -1,5 +1,8 @@
#!/bin/env python3
#
# simple log parser and status server for the jitsi meet video conference tool
#
# Reik Kaps <r31k@k4p5.de> 2020
import re
import sys
@ -9,10 +12,11 @@ from os.path import basename
from datetime import datetime
from argparse import ArgumentParser
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse
from urllib.parse import urlparse, parse_qs
try:
from sh import tail
from pybadges import badge
except ImportError as e:
print('[Error] Please install sh via pip! {}'.format(e))
@ -75,7 +79,6 @@ class MeetingRoom():
def __str__(self):
return '{}: {}'.format(self.jid, self.owner)
class logThread(threading.Thread):
def __init__(self, threadID, name, filename):
threading.Thread.__init__(self)
@ -90,22 +93,59 @@ class logThread(threading.Thread):
class MyServer(BaseHTTPRequestHandler):
def badge_respones(self, response_string):
self.send_response(200)
self.send_header("Content-type", "image/svg+xml")
self.end_headers()
self.wfile.write(response_string)
def text_response(self, response_string):
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write(response_string)
def do_GET(self):
if basename(self.path) in roomList:
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
response_string = bytes(basename(self.path)
+ '|'
+ str(roomList[basename(self.path)].ctime)
+ '|'
+ str(len(roomList[basename(self.path)].members))
+ '|', "utf-8")
self.wfile.write(response_string)
query_components = parse_qs(urlparse(self.path).query)
if "format" in query_components:
respones_format = query_components["format"][0]
else:
self.send_response(404)
self.send_header("Content-type", "text/plain")
self.end_headers()
respones_format = 'text'
room_name = basename(self.path.split('?')[0])
print('{} - {}'.format(query_components, room_name))
if room_name in roomList:
if respones_format == 'json':
pass
elif respones_format == 'svg':
s = badge(left_text='{}: {}'.format('Room', room_name),
right_text=str(len(roomList[room_name].members)),
left_color='blue',
right_color='green')
response_string = bytes(s, "utf-8")
self.badge_respones(response_string)
else:
# default text response
response_string = bytes(room_name
+ '|'
+ str(roomList[room_name].ctime)
+ '|'
+ str(len(roomList[room_name].members))
+ '|', "utf-8")
self.text_response(response_string)
else:
if respones_format == 'svg':
s = badge(left_text='{}: {}'.format('Room', room_name),
right_text='empty',
left_color='red',
right_color='darkgray')
response_string = bytes(s, "utf-8")
self.badge_respones(response_string)
else:
self.send_response(404)
# self.send_header("Content-type", "text/plain")
self.end_headers()
def getRoomName(jid):