Exemple #1
0
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)
Exemple #2
0
 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)