From 5677c9595e234df086f118b7cb014d0e61a0b1b4 Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Sat, 13 Jul 2024 14:43:58 +0200 Subject: [PATCH] Add launchpad source --- nvchecker_source/launchpad.py | 20 ++++++++++++++++++++ tests/test_launchpad.py | 15 +++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 nvchecker_source/launchpad.py create mode 100644 tests/test_launchpad.py 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'