diff --git a/swh/loader/package/maven/loader.py b/swh/loader/package/maven/loader.py --- a/swh/loader/package/maven/loader.py +++ b/swh/loader/package/maven/loader.py @@ -17,6 +17,7 @@ import requests from typing_extensions import TypedDict +from swh.loader.exception import NotFound from swh.loader.package.loader import ( BasePackageInfo, PackageLoader, @@ -87,10 +88,12 @@ time = iso8601.parse_date(a_metadata["time"]).astimezone(tz=timezone.utc) url = a_metadata["url"] checksums = {} - try: - checksums["sha1"] = get_url_body(url + ".sha1").decode() - except requests.HTTPError: - pass + for algo in ("sha1", "md5"): + try: + checksums[algo] = get_url_body(url + f".{algo}").decode() + break + except (requests.HTTPError, NotFound): + pass return cls( url=url, filename=a_metadata.get("filename") or path.split(url)[-1], diff --git a/swh/loader/package/maven/tests/data/https_repo1.maven.org/maven2_al_aldi_sprova4j_0.1.0_sprova4j-0.1.0-sources.jar.md5 b/swh/loader/package/maven/tests/data/https_repo1.maven.org/maven2_al_aldi_sprova4j_0.1.0_sprova4j-0.1.0-sources.jar.md5 new file mode 100644 --- /dev/null +++ b/swh/loader/package/maven/tests/data/https_repo1.maven.org/maven2_al_aldi_sprova4j_0.1.0_sprova4j-0.1.0-sources.jar.md5 @@ -0,0 +1 @@ +c380281ccea02c95519a77dd96112d59 \ No newline at end of file diff --git a/swh/loader/package/maven/tests/data/https_repo1.maven.org/maven2_al_aldi_sprova4j_0.1.0_sprova4j-0.1.0-sources.jar.sha1 b/swh/loader/package/maven/tests/data/https_repo1.maven.org/maven2_al_aldi_sprova4j_0.1.0_sprova4j-0.1.0-sources.jar.sha1 deleted file mode 100644 --- a/swh/loader/package/maven/tests/data/https_repo1.maven.org/maven2_al_aldi_sprova4j_0.1.0_sprova4j-0.1.0-sources.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -6976e186000753610a63713677f42f0228f04e64 \ No newline at end of file diff --git a/swh/loader/package/maven/tests/test_maven.py b/swh/loader/package/maven/tests/test_maven.py --- a/swh/loader/package/maven/tests/test_maven.py +++ b/swh/loader/package/maven/tests/test_maven.py @@ -271,6 +271,10 @@ "snapshot": 1, } == stats + for version in loader.get_versions(): + _, package_info = next(loader.get_package_info(version)) + assert package_info.checksums + def test_maven_loader_2_visits_without_change( swh_storage, requests_mock, expected_snapshot @@ -301,12 +305,14 @@ urls_history = [str(req.url) for req in list(requests_mock.request_history)] assert urls_history == [ MVN_ARTIFACTS[0]["url"] + ".sha1", + MVN_ARTIFACTS[0]["url"] + ".md5", MVN_ARTIFACTS[1]["url"] + ".sha1", MVN_ARTIFACTS[0]["url"], MVN_ARTIFACTS_POM[0], MVN_ARTIFACTS[1]["url"], MVN_ARTIFACTS_POM[1], MVN_ARTIFACTS[0]["url"] + ".sha1", + MVN_ARTIFACTS[0]["url"] + ".md5", MVN_ARTIFACTS[1]["url"] + ".sha1", ]