From 4e09974de73431578d825d8cfbf36e99b0462a1e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 2 Sep 2020 12:54:44 +0100 Subject: [PATCH] Move search screen banner to its own module --- daemon.py | 76 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/daemon.py b/daemon.py index 2e3e0556..c602a871 100644 --- a/daemon.py +++ b/daemon.py @@ -6910,6 +6910,44 @@ class PubServer(BaseHTTPRequestHandler): self._404() return True + def _searchScreenBanner(self, callingDomain: str, path: str, + baseDir: str, domain: str, port: int, + GETstartTime, GETtimings: {}) -> bool: + """Shows a banner image on the search screen + """ + nickname = getNicknameFromActor(path) + bannerFilename = \ + baseDir + '/accounts/' + \ + nickname + '@' + domain + '/search_banner.png' + if os.path.isfile(bannerFilename): + if self._etag_exists(bannerFilename): + # The file has not changed + self._304() + return True + + tries = 0 + mediaBinary = None + while tries < 5: + try: + with open(bannerFilename, 'rb') as avFile: + mediaBinary = avFile.read() + break + except Exception as e: + print(e) + time.sleep(1) + tries += 1 + if mediaBinary: + self._set_headers_etag(bannerFilename, 'image/png', + mediaBinary, None, + callingDomain) + self._write(mediaBinary) + self._benchmarkGETtimings(GETstartTime, GETtimings, + 'account qrcode done', + 'search screen banner') + return True + self._404() + return True + def do_GET(self): callingDomain = self.server.domainFull if self.headers.get('Host'): @@ -7532,38 +7570,12 @@ class PubServer(BaseHTTPRequestHandler): # search screen banner image if '/users/' in self.path and \ self.path.endswith('/search_banner.png'): - nickname = getNicknameFromActor(self.path) - bannerFilename = \ - self.server.baseDir + '/accounts/' + \ - nickname + '@' + self.server.domain + '/search_banner.png' - if os.path.isfile(bannerFilename): - if self._etag_exists(bannerFilename): - # The file has not changed - self._304() - return - - tries = 0 - mediaBinary = None - while tries < 5: - try: - with open(bannerFilename, 'rb') as avFile: - mediaBinary = avFile.read() - break - except Exception as e: - print(e) - time.sleep(1) - tries += 1 - if mediaBinary: - self._set_headers_etag(bannerFilename, 'image/png', - mediaBinary, cookie, - callingDomain) - self._write(mediaBinary) - self._benchmarkGETtimings(GETstartTime, GETtimings, - 'account qrcode done', - 'search screen banner') - return - self._404() - return + if self._searchScreenBanner(callingDomain, self.path, + self.server.baseDir, + self.server.domain, + self.server.port, + GETstartTime, GETtimings): + return self._benchmarkGETtimings(GETstartTime, GETtimings, 'account qrcode done',