From 574aa3222dc056e29281810b5018931ecf6f6a38 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 9 Feb 2020 19:09:42 +0100 Subject: [PATCH 1/4] send post requests with json this is necessary to send array requests --- src/nextcloud/requester.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nextcloud/requester.py b/src/nextcloud/requester.py index 2d3a439..285deb0 100644 --- a/src/nextcloud/requester.py +++ b/src/nextcloud/requester.py @@ -30,7 +30,7 @@ def __init__(self, endpoint, user, passwd, json_output=False): self.h_get = {"OCS-APIRequest": "true"} self.h_post = {"OCS-APIRequest": "true", - "Content-Type": "application/x-www-form-urlencoded"} + "Content-Type": "application/json"} self.auth_pk = (user, passwd) self.API_URL = None self.SUCCESS_CODE = None @@ -50,7 +50,7 @@ def get(self, url="", params=None): @catch_connection_error def post(self, url="", data=None): url = self.get_full_url(url) - res = requests.post(url, auth=self.auth_pk, data=data, headers=self.h_post) + res = requests.post(url, auth=self.auth_pk, json=data, headers=self.h_post) return self.rtn(res) @catch_connection_error From 461fd97fcac4942a333d353b6f014601fdaac4c8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 9 Feb 2020 19:10:40 +0100 Subject: [PATCH 2/4] add more options to create user --- src/nextcloud/api_wrappers/user.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/nextcloud/api_wrappers/user.py b/src/nextcloud/api_wrappers/user.py index 8031513..d269f5a 100644 --- a/src/nextcloud/api_wrappers/user.py +++ b/src/nextcloud/api_wrappers/user.py @@ -6,15 +6,30 @@ class User(WithRequester): API_URL = "/ocs/v1.php/cloud/users" SUCCESS_CODE = 100 - def add_user(self, uid, passwd): + def add_user(self, uid, passwd=None, displayName=None, email=None, groups=None, subadmin=None, quota=None, language=None): """ Create a new user on the Nextcloud server - :param uid: str, uid of new user - :param passwd: str, password of new user + :param uid: string, the required username for the new user + :param passwd: string, the password for the new user, leave empty to send welcome mail + :param displayName: string, the display name for the new user + :param email: string, the email for the new user, required if password empty + :param groups: array, the groups for the new user + :param subadmin: array, the groups in which the new user is subadmin + :param quota: string, quota for the new user + :param language: string, language for the new user :return: """ - msg = {'userid': uid, 'password': passwd} + msg = { + 'userid': uid, + 'password': passwd, + 'displayName': displayName, + 'email': email, + 'groups': groups, + 'subadmin': subadmin, + 'quota': quota, + 'language': language + } return self.requester.post("", msg) def get_users(self, search=None, limit=None, offset=None): From da8cd66df84d7293facf1eb1ad733ae5accfe3b5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 28 Feb 2020 16:36:47 +0100 Subject: [PATCH 3/4] add json accept header --- src/nextcloud/requester.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/nextcloud/requester.py b/src/nextcloud/requester.py index 285deb0..a4d6628 100644 --- a/src/nextcloud/requester.py +++ b/src/nextcloud/requester.py @@ -28,7 +28,8 @@ def __init__(self, endpoint, user, passwd, json_output=False): self.base_url = endpoint - self.h_get = {"OCS-APIRequest": "true"} + self.h_get = {"OCS-APIRequest": "true", + "Accept": "application/json"} self.h_post = {"OCS-APIRequest": "true", "Content-Type": "application/json"} self.auth_pk = (user, passwd) From 68c84f211742c49c97399da25bbdd9c95268158f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 6 Mar 2020 18:10:57 +0100 Subject: [PATCH 4/4] use json for PUT and DELETE --- src/nextcloud/requester.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/nextcloud/requester.py b/src/nextcloud/requester.py index a4d6628..9a94cdc 100644 --- a/src/nextcloud/requester.py +++ b/src/nextcloud/requester.py @@ -60,19 +60,19 @@ def put_with_timestamp(self, url="", data=None, timestamp=None): if isinstance(timestamp, (float, int)): h_post["X-OC-MTIME"] = f"{timestamp:.0f}" url = self.get_full_url(url) - res = requests.put(url, auth=self.auth_pk, data=data, headers=h_post) + res = requests.put(url, auth=self.auth_pk, json=data, headers=h_post) return self.rtn(res) @catch_connection_error def put(self, url="", data=None): url = self.get_full_url(url) - res = requests.put(url, auth=self.auth_pk, data=data, headers=self.h_post) + res = requests.put(url, auth=self.auth_pk, json=data, headers=self.h_post) return self.rtn(res) @catch_connection_error def delete(self, url="", data=None): url = self.get_full_url(url) - res = requests.delete(url, auth=self.auth_pk, data=data, headers=self.h_post) + res = requests.delete(url, auth=self.auth_pk, json=data, headers=self.h_post) return self.rtn(res) def get_full_url(self, additional_url=""):