From 0bcc0183c95119cb9be1936c0a681e9155676796 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 4 Nov 2022 20:04:46 +0100 Subject: [PATCH] Load the proxy data for is_text as well Otherwise the text state changes over time --- lib/git_exporter.py | 2 +- lib/proxy_sha256.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/git_exporter.py b/lib/git_exporter.py index fdfc77f..11780e2 100644 --- a/lib/git_exporter.py +++ b/lib/git_exporter.py @@ -72,7 +72,7 @@ class GitExporter: def commit_file(self, flat, file, size, md5): # have such files been detected as text mimetype before? - is_text = self.proxy_sha256.is_text(file.name) + is_text = self.proxy_sha256.is_text(flat.commit.package, file.name) if not is_text and is_binary_or_large(file.name, size): file_sha256 = self.proxy_sha256.get_or_put( flat.commit.project, diff --git a/lib/proxy_sha256.py b/lib/proxy_sha256.py index 8513b04..475353b 100644 --- a/lib/proxy_sha256.py +++ b/lib/proxy_sha256.py @@ -31,18 +31,18 @@ class ProxySHA256: self.url = url if url else "http://source.dyn.cloud.suse.de" self.enabled = enabled self.hashes = None - self.texts = set() + self.texts = None def load_package(self, package): # _project is unreachable for the proxy - due to being a fake package if package == "_project": self.enabled = False - self.texts = set(["_config", "_service"]) + self.texts = set(["_config", "_service", "_staging_workflow"]) self.hashes = dict() return logging.debug("Retrieve all previously defined SHA256") response = requests.get( - f"http://source.dyn.cloud.suse.de/package/{package}", timeout=5 + f"http://source.dyn.cloud.suse.de/package/{package}", timeout=50 ) if response.status_code == 200: json = response.json() @@ -94,7 +94,12 @@ class ProxySHA256: return self._obs_put(project, package, name, revision, file_md5, size) return self._proxy_put(project, package, name, revision, file_md5, size) - def is_text(self, filename): + def is_text(self, package, filename): + if self.texts is None: + if self.enabled: + self.load_package(package) + else: + self.texts = set() return filename in self.texts def get_or_put(self, project, package, name, revision, file_md5, size):