Skip to content

Commit aeb8f6a

Browse files
committed
fix: method/type fixes
1 parent fac75a0 commit aeb8f6a

6 files changed

Lines changed: 26 additions & 23 deletions

File tree

src/bsm_api_client/client/_content_methods.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ async def async_prune_server_backups(self, server_name: str) -> ActionResponse:
376376
server_name,
377377
)
378378
response = await self._request(
379-
"POST",
379+
"PUT",
380380
f"/server/{server_name}/backups/prune",
381381
json_data=None,
382382
authenticated=True,

src/bsm_api_client/client/_manager_methods.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
PruneDownloadsResponse,
2626
SettingItemResponse,
2727
SettingsResponse,
28+
ThemeListResponse,
2829
)
2930

3031
_LOGGER = logging.getLogger(__name__.split(".")[0] + ".client.manager")
@@ -105,15 +106,17 @@ async def async_get_custom_zips(self) -> CustomZipsResponse:
105106
)
106107
return cast(CustomZipsResponse, CustomZipsResponse.model_validate(response))
107108

108-
async def async_get_themes(self) -> Dict[str, Any]:
109+
async def async_get_themes(self) -> ThemeListResponse:
109110
"""Retrieves a list of available themes.
110111
111112
Returns:
112-
A dictionary containing the list of themes.
113+
A `ThemeListResponse` containing the list of themes.
113114
"""
114115
_LOGGER.info("Fetching list of available themes.")
115-
result = await self._request(method="GET", path="/themes", authenticated=True)
116-
return dict(result)
116+
result = await self._request(
117+
method="GET", path="/info/themes", authenticated=True
118+
)
119+
return cast(ThemeListResponse, ThemeListResponse.model_validate(result))
117120

118121
async def async_get_all_settings(self) -> SettingsResponse:
119122
"""Retrieve all global application settings.
@@ -123,7 +126,7 @@ async def async_get_all_settings(self) -> SettingsResponse:
123126
"""
124127
_LOGGER.info("Fetching all global application settings.")
125128
response = await self._request(
126-
method="GET", path="/settings", authenticated=True
129+
method="GET", path="/settings/get", authenticated=True
127130
)
128131
return cast(SettingsResponse, SettingsResponse.model_validate(response))
129132

@@ -141,7 +144,7 @@ async def async_set_setting(self, payload: SettingItemResponse) -> SettingsRespo
141144
)
142145
response = await self._request(
143146
method="POST",
144-
path="/settings",
147+
path="/settings/set",
145148
json_data=payload.model_dump(),
146149
authenticated=True,
147150
)
@@ -228,7 +231,7 @@ async def async_prune_downloads(
228231
)
229232

230233
response = await self._request(
231-
method="POST",
234+
method="PUT",
232235
path="/downloads/prune",
233236
json_data=payload.model_dump(),
234237
authenticated=True,

src/bsm_api_client/client/_users_methods.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ async def async_enable_user(self, user_id: int) -> BaseApiResponse:
120120
)
121121
return cast(BaseApiResponse, BaseApiResponse.model_validate(response))
122122

123-
async def async_generate_invite_token(self, role: str) -> Dict[str, Any]:
123+
async def async_generate_invite_token(self, role: str) -> ActionResponse:
124124
"""Generates an invite token.
125125
126126
:param role: The role for the new user.

tests/test_api_client.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ async def test_get_themes(client):
4040
"""Test get_themes method."""
4141
with patch.object(client, "_request", new_callable=AsyncMock) as mock_request:
4242
mock_request.return_value = {
43-
"dark": "dark.css",
43+
"status": "success",
44+
"themes": ["dark"],
4445
}
4546
result = await client.async_get_themes()
4647
mock_request.assert_called_once_with(
47-
method="GET", path="/themes", authenticated=True
48+
method="GET", path="/info/themes", authenticated=True
4849
)
49-
assert getattr(result, "dark", None) == "dark.css" or result == {
50-
"dark": "dark.css"
51-
}
50+
assert result.status == "success"
51+
assert result.themes == ["dark"]
5252

5353

5454
@pytest.mark.asyncio
@@ -61,7 +61,7 @@ async def test_prune_server_backups(client):
6161
}
6262
result = await client.async_prune_server_backups("test-server")
6363
mock_request.assert_called_once_with(
64-
"POST",
64+
"PUT",
6565
"/server/test-server/backups/prune",
6666
json_data=None,
6767
authenticated=True,
@@ -88,7 +88,7 @@ async def test_set_server_permissions(client):
8888
}
8989
result = await client.async_set_server_permissions("test-server", payload)
9090
mock_request.assert_called_once_with(
91-
"PUT",
91+
"POST",
9292
"/server/test-server/permissions/set",
9393
json_data=payload.model_dump(),
9494
authenticated=True,

tests/test_content_methods.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ async def test_uninstall_server_addon(client):
266266
mock_request.return_value = {"status": "success", "message": "Uninstalled"}
267267
result = await client.async_uninstall_server_addon("test-server", payload)
268268
mock_request.assert_called_once_with(
269-
"POST",
269+
"DELETE",
270270
"/server/test-server/addon/uninstall",
271271
json_data=payload.model_dump(),
272272
authenticated=True,
@@ -350,7 +350,7 @@ async def test_prune_server_backups(client):
350350
}
351351
result = await client.async_prune_server_backups("test-server")
352352
mock_request.assert_called_once_with(
353-
"POST",
353+
"PUT",
354354
"/server/test-server/backups/prune",
355355
json_data=None,
356356
authenticated=True,

tests/test_manager_methods.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ async def test_scan_players(client):
4040
mock_request.return_value = {"status": "success", "message": "Scan complete."}
4141
result = await client.async_scan_players()
4242
mock_request.assert_called_once_with(
43-
method="POST", path="/players/scan", authenticated=True
43+
method="PUT", path="/players/scan", authenticated=True
4444
)
4545
assert result.status == "success"
4646

@@ -90,7 +90,7 @@ async def test_get_all_settings(client):
9090
}
9191
result = await client.async_get_all_settings()
9292
mock_request.assert_called_once_with(
93-
method="GET", path="/settings", authenticated=True
93+
method="GET", path="/settings/get", authenticated=True
9494
)
9595
assert result.settings["web"]["port"] == 8080
9696

@@ -104,7 +104,7 @@ async def test_set_setting(client):
104104
result = await client.async_set_setting(payload)
105105
mock_request.assert_called_once_with(
106106
method="POST",
107-
path="/settings",
107+
path="/settings/set",
108108
json_data=payload.model_dump(),
109109
authenticated=True,
110110
)
@@ -121,7 +121,7 @@ async def test_reload_settings(client):
121121
}
122122
result = await client.async_reload_settings()
123123
mock_request.assert_called_once_with(
124-
method="POST", path="/settings/reload", authenticated=True
124+
method="PUT", path="/settings/reload", authenticated=True
125125
)
126126
assert result.status == "success"
127127

@@ -137,7 +137,7 @@ async def test_prune_downloads(client):
137137
}
138138
result = await client.async_prune_downloads(payload)
139139
mock_request.assert_called_once_with(
140-
method="POST",
140+
method="PUT",
141141
path="/downloads/prune",
142142
json_data=payload.model_dump(),
143143
authenticated=True,

0 commit comments

Comments
 (0)