diff --git a/nvchecker_source/launchpad.py b/nvchecker_source/launchpad.py new file mode 100644 index 0000000..83d3ac1 --- /dev/null +++ b/nvchecker_source/launchpad.py @@ -0,0 +1,20 @@ +# MIT Licensed +# Copyright (c) 2024 Bert Peters , et al. +from __future__ import annotations +from nvchecker.api import AsyncCache, Entry, RichResult + +PROJECT_INFO_URL = "https://api.launchpad.net/1.0/{launchpad}" + +async def get_version(name: str, conf: Entry, *, cache: AsyncCache, **kwargs): + launchpad = conf["launchpad"] + + project_data = await cache.get_json(PROJECT_INFO_URL.format(launchpad=launchpad)) + data = await cache.get_json(project_data['releases_collection_link']) + + return [ + RichResult(version=entry["version"], url=entry["web_link"]) + for entry in data["entries"] + ] + + + diff --git a/tests/test_launchpad.py b/tests/test_launchpad.py new file mode 100644 index 0000000..3dd0100 --- /dev/null +++ b/tests/test_launchpad.py @@ -0,0 +1,15 @@ +# MIT Licensed +# Copyright (c) 2024 Bert Peters , et al. +import pytest +pytestmark = [pytest.mark.asyncio(scope="session"), pytest.mark.needs_net] + +async def test_launchpad(get_version): + version = await get_version( + "sakura", + { + "source": "launchpad", + "launchpad": "sakura", + } + ) + + assert version == '3.8.7'