@@ -798,14 +798,25 @@ def replace(
798798 """
799799 raise NotImplementedError ()
800800
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 )
809820
810821
811822class BaseAsyncSCIMClient (SCIMClient ):
@@ -1064,14 +1075,33 @@ async def replace(
10641075 """
10651076 raise NotImplementedError ()
10661077
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