From d5b48c2d68778b6b5c56148a5e890435f4878053 Mon Sep 17 00:00:00 2001 From: "Shon T. Urbas" Date: Wed, 6 Dec 2017 11:05:50 -0500 Subject: [PATCH 1/4] no need for simplejson --- keycloak/exceptions.py | 2 +- requirements.txt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/keycloak/exceptions.py b/keycloak/exceptions.py index 95be231..8c422f7 100644 --- a/keycloak/exceptions.py +++ b/keycloak/exceptions.py @@ -16,7 +16,7 @@ # along with this program. If not, see . import requests -from simplejson import JSONDecodeError +from json import JSONDecodeError class KeycloakError(Exception): diff --git a/requirements.txt b/requirements.txt index bc7067a..61caa61 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -requests==2.18.3 +requests==2.18.4 httmock==1.2.5 python-jose==1.3.2 -simplejson \ No newline at end of file From bd06ace4c2374bea08fcda02719732e3125aab62 Mon Sep 17 00:00:00 2001 From: "Shon T. Urbas" Date: Wed, 6 Dec 2017 11:06:49 -0500 Subject: [PATCH 2/4] revert to payload --- keycloak/keycloak_admin.py | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/keycloak/keycloak_admin.py b/keycloak/keycloak_admin.py index c24dbc3..67fefcf 100644 --- a/keycloak/keycloak_admin.py +++ b/keycloak/keycloak_admin.py @@ -106,7 +106,7 @@ class KeycloakAdmin: data_raw = self.connection.raw_get(URL_ADMIN_USERS.format(**params_path), **query) return raise_error_from_response(data_raw, KeycloakGetError) - def create_user(self, username, email='', firstName='', lastName='', emailVerified=False, enabled=True): + def create_user(self, payload): """ Create a new user Username must be unique @@ -115,17 +115,11 @@ class KeycloakAdmin: :param payload: UserRepresentation + :return: UserRepresentation """ - data={} - data["username"]=username - data["email"]=email - data["firstName"]=firstName - data["lastName"]=lastName - data["emailVerified"]=emailVerified - data["enabled"]=enabled params_path = {"realm-name": self.realm_name} data_raw = self.connection.raw_post(URL_ADMIN_USERS.format(**params_path), - data=json.dumps(data)) + data=json.dumps(payload)) return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) def users_count(self): @@ -138,7 +132,6 @@ class KeycloakAdmin: data_raw = self.connection.raw_get(URL_ADMIN_USERS_COUNT.format(**params_path)) return raise_error_from_response(data_raw, KeycloakGetError) - def get_user_id(self, username): """ Get internal keycloak user id from username @@ -184,14 +177,9 @@ class KeycloakAdmin: :return: Http response """ - data={} - data["username"]=username - data["email"]=email - data["firstName"]=firstName - data["lastName"]=lastName - data["emailVerified"]=emailVerified - data["enabled"]=enabled - params_path = {"realm-name": self.realm_name} + data = {"username": username, "email": email, "firstName": firstName, "lastName": lastName, + "emailVerified": emailVerified, "enabled": enabled} + params_path = {"realm-name": self.realm_name, "id": user_id} data_raw = self.connection.raw_put(URL_ADMIN_USER.format(**params_path), data=json.dumps(data)) From fb4ce0045491c9f26a25373bd0668ff9863797a1 Mon Sep 17 00:00:00 2001 From: "Shon T. Urbas" Date: Wed, 6 Dec 2017 11:52:12 -0500 Subject: [PATCH 3/4] revert back to payload --- keycloak/keycloak_admin.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/keycloak/keycloak_admin.py b/keycloak/keycloak_admin.py index 67fefcf..6c9e32b 100644 --- a/keycloak/keycloak_admin.py +++ b/keycloak/keycloak_admin.py @@ -168,7 +168,7 @@ class KeycloakAdmin: data_raw = self.connection.raw_get(URL_ADMIN_USER.format(**params_path)) return raise_error_from_response(data_raw, KeycloakGetError) - def update_user(self, user_id, username, email='', firstName='', lastName='', emailVerified=False, enabled=True): + def update_user(self, user_id, payload): """ Update the user @@ -177,12 +177,9 @@ class KeycloakAdmin: :return: Http response """ - data = {"username": username, "email": email, "firstName": firstName, "lastName": lastName, - "emailVerified": emailVerified, "enabled": enabled} - params_path = {"realm-name": self.realm_name, "id": user_id} data_raw = self.connection.raw_put(URL_ADMIN_USER.format(**params_path), - data=json.dumps(data)) + data=json.dumps(payload)) return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) def delete_user(self, user_id): From 944e2a7a39644c2863cfd7c9f3381de1dea614ba Mon Sep 17 00:00:00 2001 From: "Shon T. Urbas" Date: Wed, 6 Dec 2017 14:25:16 -0500 Subject: [PATCH 4/4] A decoder error is a ValueError allows us to catch all decode errors from requests without force install simplejson --- keycloak/exceptions.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/keycloak/exceptions.py b/keycloak/exceptions.py index 8c422f7..27d8b14 100644 --- a/keycloak/exceptions.py +++ b/keycloak/exceptions.py @@ -16,7 +16,6 @@ # along with this program. If not, see . import requests -from json import JSONDecodeError class KeycloakError(Exception): @@ -73,10 +72,9 @@ def raise_error_from_response(response, error, expected_code=200): if expected_code == response.status_code: if expected_code == requests.codes.no_content: return {} - try: return response.json() - except JSONDecodeError as e: + except ValueError: return response.content try: