Skip to content

Commit 01b87ec

Browse files
committed
refactor: Remove redundant API Implementation
1 parent 248678b commit 01b87ec

File tree

2 files changed

+13
-86
lines changed

2 files changed

+13
-86
lines changed

supertokens_python/recipe/multitenancy/api/implementation.py

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,16 @@ async def login_methods_get(
4040
api_options: APIOptions,
4141
user_context: Dict[str, Any],
4242
) -> Union[LoginMethodsGetOkResult, GeneralErrorResponse]:
43-
tenant_config_res = await api_options.recipe_implementation.get_tenant(
43+
44+
tenant_config = await api_options.recipe_implementation.get_tenant(
4445
tenant_id, user_context
4546
)
4647

47-
if tenant_config_res is None:
48+
if tenant_config is None:
4849
raise Exception("Tenant not found")
4950

5051
provider_inputs_from_static = api_options.static_third_party_providers
51-
provider_configs_from_core = tenant_config_res.third_party.providers
52+
provider_configs_from_core = tenant_config.third_party.providers
5253

5354
merged_providers = merge_providers_from_core_and_static(
5455
provider_configs_from_core, provider_inputs_from_static
@@ -66,27 +67,20 @@ async def login_methods_get(
6667
)
6768

6869
if provider_instance is None:
69-
# because creating instance from the merged provider list itself
7070
raise Exception("Should never come here")
7171

72-
final_provider_list.append(
73-
ThirdPartyProvider(
74-
provider_instance.id, provider_instance.config.name
75-
)
76-
)
77-
except Exception as e:
78-
if isinstance(e, ClientTypeNotFoundError):
79-
continue
80-
raise e
72+
except ClientTypeNotFoundError:
73+
continue
74+
final_provider_list.append(
75+
ThirdPartyProvider(provider_instance.id, provider_instance.config.name)
76+
)
8177

8278
return LoginMethodsGetOkResult(
8379
email_password=LoginMethodEmailPassword(
84-
tenant_config_res.emailpassword.enabled
85-
),
86-
passwordless=LoginMethodPasswordless(
87-
tenant_config_res.passwordless.enabled
80+
tenant_config.emailpassword.enabled
8881
),
82+
passwordless=LoginMethodPasswordless(tenant_config.passwordless.enabled),
8983
third_party=LoginMethodThirdParty(
90-
tenant_config_res.third_party.enabled, final_provider_list
84+
tenant_config.third_party.enabled, final_provider_list
9185
),
9286
)

supertokens_python/recipe/multitenancy/recipe.py

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
from ...post_init_callbacks import PostSTInitCallbacks
2828

2929
from .interfaces import (
30-
APIInterface,
3130
APIOptions,
3231
TypeGetAllowedDomainsForTenantId,
3332
)
@@ -42,19 +41,12 @@
4241

4342
from supertokens_python.normalised_url_path import NormalisedURLPath
4443
from supertokens_python.querier import Querier
45-
from supertokens_python.types import GeneralErrorResponse
44+
from supertokens_python.recipe.multitenancy.api.implementation import APIImplementation
4645

4746

4847
from .api import handle_login_methods_api
4948
from .constants import LOGIN_METHODS
5049
from .exceptions import MultitenancyError
51-
from .interfaces import (
52-
LoginMethodsGetOkResult,
53-
ThirdPartyProvider,
54-
LoginMethodEmailPassword,
55-
LoginMethodPasswordless,
56-
LoginMethodThirdParty,
57-
)
5850
from .utils import (
5951
InputOverrideConfig,
6052
validate_and_normalise_user_input,
@@ -196,65 +188,6 @@ def reset():
196188
MultitenancyRecipe.__instance = None
197189

198190

199-
class APIImplementation(APIInterface):
200-
async def login_methods_get(
201-
self,
202-
tenant_id: str,
203-
client_type: Optional[str],
204-
api_options: APIOptions,
205-
user_context: Dict[str, Any],
206-
) -> Union[LoginMethodsGetOkResult, GeneralErrorResponse]:
207-
from supertokens_python.recipe.thirdparty.providers.config_utils import (
208-
find_and_create_provider_instance,
209-
merge_providers_from_core_and_static,
210-
)
211-
from supertokens_python.recipe.thirdparty.exceptions import (
212-
ClientTypeNotFoundError,
213-
)
214-
215-
tenant_config = await api_options.recipe_implementation.get_tenant(
216-
tenant_id, user_context
217-
)
218-
219-
if tenant_config is None:
220-
raise Exception("Tenant not found")
221-
222-
provider_inputs_from_static = api_options.static_third_party_providers
223-
provider_configs_from_core = tenant_config.third_party.providers
224-
225-
merged_providers = merge_providers_from_core_and_static(
226-
provider_configs_from_core, provider_inputs_from_static
227-
)
228-
229-
final_provider_list: List[ThirdPartyProvider] = []
230-
231-
for provider_input in merged_providers:
232-
try:
233-
provider_instance = await find_and_create_provider_instance(
234-
merged_providers,
235-
provider_input.config.third_party_id,
236-
client_type,
237-
user_context,
238-
)
239-
240-
if provider_instance is None:
241-
raise Exception("Should never come here")
242-
243-
except ClientTypeNotFoundError:
244-
continue
245-
final_provider_list.append(
246-
ThirdPartyProvider(provider_instance.id, provider_instance.config.name)
247-
)
248-
249-
return LoginMethodsGetOkResult(
250-
LoginMethodEmailPassword(tenant_config.emailpassword.enabled),
251-
LoginMethodPasswordless(tenant_config.passwordless.enabled),
252-
LoginMethodThirdParty(
253-
tenant_config.third_party.enabled, final_provider_list
254-
),
255-
)
256-
257-
258191
class AllowedDomainsClaimClass(PrimitiveArrayClaim[List[str]]):
259192
def __init__(self):
260193
default_max_age_in_sec = 60 * 60

0 commit comments

Comments
 (0)