+ url = (
+ f"{spec.environment[u'urls'][u'URL[NEXUS,DOC]']}/"
+ f"{rls}/"
+ f"{spec.environment[u'urls'][u'DIR[NEXUS,DOC]']}/"
+ f"{job}{SEPARATOR}{build[u'build']}{SEPARATOR}{file_name[idx]}"
+ )
+
+ logging.info(f"Downloading {url}")
+
+ new_name = join(
+ spec.environment[u"paths"][u"DIR[WORKING,DATA]"],
+ f"{job}{SEPARATOR}{build[u'build']}{SEPARATOR}{file_name[idx]}"
+ )
+ success, downloaded_name = _download_file(url, new_name, arch=arch)
+ if success:
+ file_name = file_name[idx]
+ if file_name.endswith(u".gz"):
+ with gzip.open(downloaded_name[:-3], u"rb") as gzip_file:
+ file_content = gzip_file.read()
+ with open(downloaded_name[:-3], u"wb") as xml_file:
+ xml_file.write(file_content)
+ break
+
+ if not success:
+ # Try to download .zip from jenkins.fd.io
+ file_name = spec.input[u"zip-file-name"]
+ download_path = spec.input[u"zip-download-path"]
+ if job.startswith(u"csit-"):
+ url = spec.environment[u"urls"][u"URL[JENKINS,CSIT]"]
+ else:
+ raise PresentationError(f"No url defined for the job {job}.")
+
+ full_name = download_path.format(
+ job=job, build=build[u"build"], filename=file_name
+ )
+ url = u"{0}/{1}".format(url, full_name)
+ new_name = join(
+ spec.environment[u"paths"][u"DIR[WORKING,DATA]"],
+ f"{job}{SEPARATOR}{build[u'build']}{SEPARATOR}{file_name}"
+ )
+ logging.info(f"Downloading {url}")
+ success, downloaded_name = _download_file(url, new_name)
+
+ if success and downloaded_name.endswith(u".zip"):
+ if not is_zipfile(downloaded_name):
+ logging.error(f"Zip file {new_name} is corrupted.")
+ success = False
+
+ if success:
+ build[u"file-name"] = downloaded_name
+
+ if file_name.endswith(u".gz"):
+ build[u"file-name"] = downloaded_name[:-3]
+
+ if downloaded_name.endswith(u".zip"):
+ success = _unzip_file(spec, build, pid)
+
+ return success