From 5114c3e28ac447642dd8f355c0b0ada4a2246339 Mon Sep 17 00:00:00 2001 From: Salem Wafi Date: Sun, 12 Nov 2023 13:44:02 -0600 Subject: [PATCH] feat: add an optional search criteria to the get_realm_roles function --- src/keycloak/keycloak_admin.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/keycloak/keycloak_admin.py b/src/keycloak/keycloak_admin.py index a5052f3..1a9ba44 100644 --- a/src/keycloak/keycloak_admin.py +++ b/src/keycloak/keycloak_admin.py @@ -2147,7 +2147,7 @@ class KeycloakAdmin: ) return raise_error_from_response(data_raw, KeycloakGetError, expected_codes=[200]) - def get_realm_roles(self, brief_representation=True): + def get_realm_roles(self, brief_representation=True, search_text=""): """Get all roles for the realm or client. RoleRepresentation @@ -2155,13 +2155,22 @@ class KeycloakAdmin: :param brief_representation: whether to omit role attributes in the response :type brief_representation: bool + :param search_text: optional search text to limit the returned result. + :type search_text: str :return: Keycloak server response (RoleRepresentation) :rtype: list """ + url = urls_patterns.URL_ADMIN_REALM_ROLES params_path = {"realm-name": self.connection.realm_name} params = {"briefRepresentation": brief_representation} + + # set the search_text path param, if it is a valid string + if search_text is not None and search_text.strip() != '': + params_path["search-text"] = search_text + url = urls_patterns.URL_ADMIN_REALM_ROLES_SEARCH + data_raw = self.connection.raw_get( - urls_patterns.URL_ADMIN_REALM_ROLES.format(**params_path), **params + url.format(**params_path), **params ) return raise_error_from_response(data_raw, KeycloakGetError)