Skip to content

Commit bd674b9

Browse files
authored
fix: Handle JSON responses (#341)
Sends the response text immediately if the response type is set to `json` Made for dealing with a JSONResponse that does not include an OCS object --------- Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
1 parent c8c6374 commit bd674b9

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

nc_py_api/_session.py

+6
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ def ocs(
197197
*,
198198
content: bytes | str | typing.Iterable[bytes] | typing.AsyncIterable[bytes] | None = None,
199199
json: dict | list | None = None,
200+
response_type: str | None = None,
200201
params: dict | None = None,
201202
files: dict | None = None,
202203
**kwargs,
@@ -215,6 +216,8 @@ def ocs(
215216
if response.status_code == 204: # NO_CONTENT
216217
return []
217218
response_data = loads(response.text)
219+
if response_type == "json":
220+
return response_data
218221
ocs_meta = response_data["ocs"]["meta"]
219222
if ocs_meta["status"] != "ok":
220223
if (
@@ -319,6 +322,7 @@ async def ocs(
319322
*,
320323
content: bytes | str | typing.Iterable[bytes] | typing.AsyncIterable[bytes] | None = None,
321324
json: dict | list | None = None,
325+
response_type: str | None = None,
322326
params: dict | None = None,
323327
files: dict | None = None,
324328
**kwargs,
@@ -337,6 +341,8 @@ async def ocs(
337341
if response.status_code == 204: # NO_CONTENT
338342
return []
339343
response_data = loads(response.text)
344+
if response_type == "json":
345+
return response_data
340346
ocs_meta = response_data["ocs"]["meta"]
341347
if ocs_meta["status"] != "ok":
342348
if (

nc_py_api/nextcloud.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,14 @@ def ocs(
137137
*,
138138
content: bytes | str | typing.Iterable[bytes] | typing.AsyncIterable[bytes] | None = None,
139139
json: dict | list | None = None,
140+
response_type: str | None = None,
140141
params: dict | None = None,
141142
**kwargs,
142143
):
143144
"""Performs OCS call and returns OCS response payload data."""
144-
return self._session.ocs(method, path, content=content, json=json, params=params, **kwargs)
145+
return self._session.ocs(
146+
method, path, content=content, json=json, response_type=response_type, params=params, **kwargs
147+
)
145148

146149
def download_log(self, fp) -> None:
147150
"""Downloads Nextcloud log file. Requires Admin privileges."""
@@ -238,11 +241,14 @@ async def ocs(
238241
*,
239242
content: bytes | str | typing.Iterable[bytes] | typing.AsyncIterable[bytes] | None = None,
240243
json: dict | list | None = None,
244+
response_type: str | None = None,
241245
params: dict | None = None,
242246
**kwargs,
243247
):
244248
"""Performs OCS call and returns OCS response payload data."""
245-
return await self._session.ocs(method, path, content=content, json=json, params=params, **kwargs)
249+
return await self._session.ocs(
250+
method, path, content=content, json=json, response_type=response_type, params=params, **kwargs
251+
)
246252

247253
async def download_log(self, fp) -> None:
248254
"""Downloads Nextcloud log file. Requires Admin privileges."""

0 commit comments

Comments
 (0)