From 167a5e3b5e66f83aa59d02d8a6c038cc2ede18c8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 2 Sep 2020 12:20:12 +0100 Subject: [PATCH] Move qr code to its own method --- daemon.py | 79 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 35 deletions(-) diff --git a/daemon.py b/daemon.py index d374fd176..2e3e05565 100644 --- a/daemon.py +++ b/daemon.py @@ -6872,6 +6872,44 @@ class PubServer(BaseHTTPRequestHandler): self._404() return True + def _showQRcode(self, callingDomain: str, path: str, + baseDir: str, domain: str, port: int, + GETstartTime, GETtimings: {}) -> bool: + """Shows a QR code for an account + """ + nickname = getNicknameFromActor(path) + savePersonQrcode(baseDir, nickname, domain, port) + qrFilename = \ + baseDir + '/accounts/' + nickname + '@' + domain + '/qrcode.png' + if os.path.isfile(qrFilename): + if self._etag_exists(qrFilename): + # The file has not changed + self._304() + return + + tries = 0 + mediaBinary = None + while tries < 5: + try: + with open(qrFilename, 'rb') as avFile: + mediaBinary = avFile.read() + break + except Exception as e: + print(e) + time.sleep(1) + tries += 1 + if mediaBinary: + self._set_headers_etag(qrFilename, 'image/png', + mediaBinary, None, + callingDomain) + self._write(mediaBinary) + self._benchmarkGETtimings(GETstartTime, GETtimings, + 'login screen logo done', + 'account qrcode') + return True + self._404() + return True + def do_GET(self): callingDomain = self.server.domainFull if self.headers.get('Host'): @@ -7480,41 +7518,12 @@ class PubServer(BaseHTTPRequestHandler): # QR code for account handle if '/users/' in self.path and \ self.path.endswith('/qrcode.png'): - nickname = getNicknameFromActor(self.path) - savePersonQrcode(self.server.baseDir, - nickname, self.server.domain, - self.server.port) - qrFilename = \ - self.server.baseDir + '/accounts/' + \ - nickname + '@' + self.server.domain + '/qrcode.png' - if os.path.isfile(qrFilename): - if self._etag_exists(qrFilename): - # The file has not changed - self._304() - return - - tries = 0 - mediaBinary = None - while tries < 5: - try: - with open(qrFilename, 'rb') as avFile: - mediaBinary = avFile.read() - break - except Exception as e: - print(e) - time.sleep(1) - tries += 1 - if mediaBinary: - self._set_headers_etag(qrFilename, 'image/png', - mediaBinary, cookie, - callingDomain) - self._write(mediaBinary) - self._benchmarkGETtimings(GETstartTime, GETtimings, - 'login screen logo done', - 'account qrcode') - return - self._404() - return + if self._showQRcode(callingDomain, self.path, + self.server.baseDir, + self.server.domain, + self.server.port, + GETstartTime, GETtimings): + return self._benchmarkGETtimings(GETstartTime, GETtimings, 'login screen logo done',