def fetch_blacklist_from_cache(path, ttl): if not os.path.isfile(path): return None if os.stat(path).st_mtime + ttl < time.time(): return None with bom_aware_open(path, encoding="utf-8", mode="r") as f: result = yaml.safe_load(f) if isinstance(result, list): return result
def fetch_blacklist_from_url(url, timeout=3, cache=None): result = [] try: r = requests.get(url, timeout=timeout) result = process_blacklist(r.json()) if cache is not None: try: with bom_aware_open(cache, encoding="utf-8", mode="w") as f: yaml.safe_dump(result, f) except: logger.info("Fetched plugin blacklist but couldn't write it to its cache file.") except: logger.info("Unable to fetch plugin blacklist from {}, proceeding without it.".format(url)) return result
def fixed_start(self): """ Opens the file for reading and determines the file size. """ octoprint.util.comm.PrintingFileInformation.start(self) with self._handle_mutex: self._handle = bom_aware_open(self._filename, encoding="utf-8", errors="replace", newline="") self._pos = self._handle.tell() if self._handle.encoding.endswith("-sig"): import codecs self._pos += len(codecs.BOM_UTF8) self._read_lines = 0