diff --git a/Crx/connection.py b/Crx/connection.py index 16a3184..13b6294 100644 --- a/Crx/connection.py +++ b/Crx/connection.py @@ -1,3 +1,4 @@ +import json from typing import Union, List, Optional import requests @@ -23,6 +24,10 @@ download.jsp?path=%2Fcontent%2Fdam%2Fbeeldbank%2Fvrouw-direct-naar.jpg%2Fjcr%3Ac CRX_SERVER_ROOT = '/crx/server/crx.default/jcr:root/' CRX_QUERY = '/crx/de/query.jsp' + +PACKMGR_EXEC = '/crx/packmgr/service/exec.json' +PACKMGR_UPDATE = '/crx/packmgr/update.jsp' + WCM_REFERENCES = '/bin/wcm/references.json' WCM_PAGE_REFERENCES = '/libs/wcm/core/content/reference.json' WCM_REPLICATE = '/bin/replicate.json' @@ -279,3 +284,32 @@ class Connection: # todo check for exception resp = self._session.post(self._data_root, files=files) resp.raise_for_status() + + def create_package(self, name: str, group: str, version: str = '1.0') -> (bool, str): + resp = self._session.post(self._host + PACKMGR_EXEC, params={'cmd': 'create'}, data={ + '_charset_': 'utf-8', + 'packageName': name, + 'packageVersion': version, + 'groupName': group + }) + resp.raise_for_status() + data = resp.json() + if not data['success']: + return False, f'/etc/packages/{group}/{data["msg"]}' + return True, resp.json()['path'] + + def update_package(self, path: str, name: str, group: str, version: str, filters: list, description: str = None): + resp = self._session.post( + self._host + PACKMGR_UPDATE, + files={ + 'path': (None, path), + 'packageName': (None, name), + 'groupName': (None, group), + 'version': (None, version), + 'filter': (None, json.dumps(filters, separators=(',', ':'))), + # 'description': description or '', + '_charset_': (None, 'UTF-8') + } + ) + resp.raise_for_status() + return resp.json()['path']