def synchronize_header(source: str, target: str) -> None: "transfer header metadata between local paths" header_dict = dict() # never empty try: header_dict = SUDO.xattr_load(source) except: pass if not header_dict: header_dict = produce_header(source) try: SUDO.xattr_save(target, header_dict) except: SUDO.files_sync_time(source, target)
def get(self, local_url: str, remote_url: str) -> None: "fetch remote resource and persist headers in xattr" logger.debug(f"http.get.fetch: {remote_url}") local, remote = self.parse(local_url, remote_url) header_path = make_temp_path("curl-head") source_path = make_temp_path("curl-gets") target_path = local.path SUDO.parent_ensure(header_path) curl = Curl() with_auth_url(curl, remote_url) with_proxy_config(curl, remote_url) curl.with_file_get(source_path) curl.with_dump_header(header_path) curl.execute_unit_sert() header_dict = parse_header_file(header_path) SUDO.files_delete(header_path) SUDO.files_move(source_path, target_path) # TODO attr SUDO.xattr_save(target_path, header_dict)