@@ -798,14 +798,25 @@ def replace(
798
798
"""
799
799
raise NotImplementedError ()
800
800
801
- def discover (self ):
802
- """Dynamically discover the server models :class:`~scim2_models.Schema` and :class:`~scim2_models.ResourceType`."""
803
- resource_types_response = self .query (ResourceType )
804
- schemas_response = self .query (Schema )
805
- self .service_provider_config = self .query (ServiceProviderConfig )
806
- self .resource_types = resource_types_response .resources
807
- schemas = schemas_response .resources
808
- self .resource_models = self .build_resource_models (self .resource_types , schemas )
801
+ def discover (self , schemas = True , resource_types = True , service_provider_config = True ):
802
+ """Dynamically discover the server configuration objects.
803
+
804
+ :param schemas: Whether to discover the :class:`~scim2_models.Schema` endpoint.
805
+ :param resource_types: Whether to discover the :class:`~scim2_models.ResourceType` endpoint.
806
+ :param service_provider_config: Whether to discover the :class:`~scim2_models.ServiceProviderConfig` endpoint.
807
+ """
808
+ if resource_types :
809
+ resource_types_response = self .query (ResourceType )
810
+ self .resource_types = resource_types_response .resources
811
+
812
+ if schemas :
813
+ schemas_response = self .query (Schema )
814
+ self .resource_models = self .build_resource_models (
815
+ self .resource_types , schemas_response .resources
816
+ )
817
+
818
+ if service_provider_config :
819
+ self .service_provider_config = self .query (ServiceProviderConfig )
809
820
810
821
811
822
class BaseAsyncSCIMClient (SCIMClient ):
@@ -1064,14 +1075,33 @@ async def replace(
1064
1075
"""
1065
1076
raise NotImplementedError ()
1066
1077
1067
- async def discover (self ):
1068
- """Dynamically discover the server models :class:`~scim2_models.Schema` and :class:`~scim2_models.ResourceType`."""
1069
- resources_task = asyncio .create_task (self .query (ResourceType ))
1070
- schemas_task = asyncio .create_task (self .query (Schema ))
1071
- spc_task = asyncio .create_task (self .query (ServiceProviderConfig ))
1072
- resource_types_response = await resources_task
1073
- schemas_response = await schemas_task
1074
- self .service_provider_config = await spc_task
1075
- self .resource_types = resource_types_response .resources
1076
- schemas = schemas_response .resources
1077
- self .resource_models = self .build_resource_models (self .resource_types , schemas )
1078
+ async def discover (
1079
+ self , schemas = True , resource_types = True , service_provider_config = True
1080
+ ):
1081
+ """Dynamically discover the server configuration objects.
1082
+
1083
+ :param schemas: Whether to discover the :class:`~scim2_models.Schema` endpoint.
1084
+ :param resource_types: Whether to discover the :class:`~scim2_models.ResourceType` endpoint.
1085
+ :param service_provider_config: Whether to discover the :class:`~scim2_models.ServiceProviderConfig` endpoint.
1086
+ """
1087
+ if schemas :
1088
+ schemas_task = asyncio .create_task (self .query (Schema ))
1089
+
1090
+ if resource_types :
1091
+ resources_types_task = asyncio .create_task (self .query (ResourceType ))
1092
+
1093
+ if service_provider_config :
1094
+ spc_task = asyncio .create_task (self .query (ServiceProviderConfig ))
1095
+
1096
+ if resource_types :
1097
+ resource_types_response = await resources_types_task
1098
+ self .resource_types = resource_types_response .resources
1099
+
1100
+ if schemas :
1101
+ schemas_response = await schemas_task
1102
+ self .resource_models = self .build_resource_models (
1103
+ self .resource_types , schemas_response .resources
1104
+ )
1105
+
1106
+ if service_provider_config :
1107
+ self .service_provider_config = await spc_task
0 commit comments