mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-07-16 07:19:57 +00:00
feat: port to new AUR API
This commit is contained in:
@ -97,20 +97,17 @@ class AUR(Remote):
|
||||
|
||||
Returns:
|
||||
list[AURPackage]: response parsed to package list
|
||||
|
||||
Raises:
|
||||
PackageInfoError: if multiple arguments are passed
|
||||
"""
|
||||
query: list[tuple[str, str]] = [
|
||||
("type", request_type),
|
||||
("v", self.DEFAULT_RPC_VERSION),
|
||||
]
|
||||
if len(args) != 1:
|
||||
raise PackageInfoError("AUR API requires exactly one argument to search")
|
||||
|
||||
arg_query = "arg[]" if len(args) > 1 else "arg"
|
||||
for arg in args:
|
||||
query.append((arg_query, arg))
|
||||
url = f"{self.DEFAULT_RPC_URL}/v{self.DEFAULT_RPC_VERSION}/{request_type}/{args[0]}"
|
||||
query = list(kwargs.items())
|
||||
|
||||
for key, value in kwargs.items():
|
||||
query.append((key, value))
|
||||
|
||||
response = self.make_request("GET", self.DEFAULT_RPC_URL, params=query)
|
||||
response = self.make_request("GET", url, params=query)
|
||||
return self.parse_response(response.json())
|
||||
|
||||
def package_info(self, package_name: str, *, pacman: Pacman | None) -> AURPackage:
|
||||
|
@ -76,24 +76,18 @@ def test_aur_request(aur: AUR, aur_package_ahriman: AURPackage,
|
||||
request_mock = mocker.patch("ahriman.core.alpm.remote.AUR.make_request", return_value=response_mock)
|
||||
|
||||
assert aur.aur_request("info", "ahriman") == [aur_package_ahriman]
|
||||
request_mock.assert_called_once_with(
|
||||
"GET", "https://aur.archlinux.org/rpc",
|
||||
params=[("type", "info"), ("v", "5"), ("arg", "ahriman")])
|
||||
request_mock.assert_called_once_with("GET", "https://aur.archlinux.org/rpc/v5/info/ahriman", params=[])
|
||||
|
||||
|
||||
def test_aur_request_multi_arg(aur: AUR, aur_package_ahriman: AURPackage,
|
||||
mocker: MockerFixture, resource_path_root: Path) -> None:
|
||||
def test_aur_request_multi_arg(aur: AUR) -> None:
|
||||
"""
|
||||
must perform request to AUR with multiple args
|
||||
must raise PackageInfoError if invalid amount of arguments supplied
|
||||
"""
|
||||
response_mock = MagicMock()
|
||||
response_mock.json.return_value = json.loads(_get_response(resource_path_root))
|
||||
request_mock = mocker.patch("ahriman.core.alpm.remote.AUR.make_request", return_value=response_mock)
|
||||
with pytest.raises(PackageInfoError):
|
||||
aur.aur_request("search", "ahriman", "is", "cool")
|
||||
|
||||
assert aur.aur_request("search", "ahriman", "is", "cool") == [aur_package_ahriman]
|
||||
request_mock.assert_called_once_with(
|
||||
"GET", "https://aur.archlinux.org/rpc",
|
||||
params=[("type", "search"), ("v", "5"), ("arg[]", "ahriman"), ("arg[]", "is"), ("arg[]", "cool")])
|
||||
with pytest.raises(PackageInfoError):
|
||||
aur.aur_request("search")
|
||||
|
||||
|
||||
def test_aur_request_with_kwargs(aur: AUR, aur_package_ahriman: AURPackage,
|
||||
@ -106,9 +100,8 @@ def test_aur_request_with_kwargs(aur: AUR, aur_package_ahriman: AURPackage,
|
||||
request_mock = mocker.patch("ahriman.core.alpm.remote.AUR.make_request", return_value=response_mock)
|
||||
|
||||
assert aur.aur_request("search", "ahriman", by="name") == [aur_package_ahriman]
|
||||
request_mock.assert_called_once_with(
|
||||
"GET", "https://aur.archlinux.org/rpc",
|
||||
params=[("type", "search"), ("v", "5"), ("arg", "ahriman"), ("by", "name")])
|
||||
request_mock.assert_called_once_with("GET", "https://aur.archlinux.org/rpc/v5/search/ahriman",
|
||||
params=[("by", "name")])
|
||||
|
||||
|
||||
def test_aur_request_failed(aur: AUR, mocker: MockerFixture) -> None:
|
||||
|
Reference in New Issue
Block a user