Menu

pycaravel: This module is designed to simplify continuous integration (CI) of data from multiple projects.

Source code for caravel.nextcloud.response

from json import JSONDecodeError

from .api_wrappers.webdav import WebDAVStatusCodes


[docs] class NextCloudResponse: def __init__(self, response, json_output=True, data=None): self.raw = response if not data: self.data = ( response.json() if json_output else response.content.decode("UTF-8")) else: self.data = data
[docs] class WebDAVResponse(NextCloudResponse): """ Response class for WebDAV api methods. """ METHODS_SUCCESS_CODES = { "PROPFIND": [WebDAVStatusCodes.MULTISTATUS_CODE], "PROPPATCH": [WebDAVStatusCodes.MULTISTATUS_CODE], "REPORT": [WebDAVStatusCodes.MULTISTATUS_CODE], "MKCOL": [WebDAVStatusCodes.CREATED_CODE], "COPY": [WebDAVStatusCodes.CREATED_CODE, WebDAVStatusCodes.NO_CONTENT_CODE], "MOVE": [WebDAVStatusCodes.CREATED_CODE, WebDAVStatusCodes.NO_CONTENT_CODE], "PUT": [WebDAVStatusCodes.CREATED_CODE], "DELETE": [WebDAVStatusCodes.NO_CONTENT_CODE] } def __init__(self, response, data=None): super().__init__( response=response, data=data, json_output=False) request_method = response.request.method self.is_ok = False if request_method in self.METHODS_SUCCESS_CODES: self.is_ok = response.status_code in self.METHODS_SUCCESS_CODES[ request_method] def __repr__(self): is_ok_str = "OK" if self.is_ok else "Failed" return f"<OCSResponse: Status: {is_ok_str}>"
[docs] class OCSResponse(NextCloudResponse): """ Response class for OCS api methods. """ def __init__(self, response, json_output=True, success_code=None): self.raw = response self.is_ok = None if json_output: try: self.full_data = response.json() self.meta = self.full_data['ocs']['meta'] self.status_code = self.full_data['ocs']['meta']['statuscode'] self.data = self.full_data['ocs']['data'] if success_code: self.is_ok = ( self.full_data['ocs']['meta']['statuscode'] == success_code) except JSONDecodeError: self.is_ok = False self.data = {'message': 'Unable to parse JSON response'} else: self.data = response.content.decode("UTF-8") def __repr__(self): is_ok_str = "OK" if self.is_ok else "Failed" return f"<OCSResponse: Status: {is_ok_str}>"

Follow us

© 2025, Antoine Grigis