diff options
| author | Alexander_Kabui | 2025-07-04 17:11:23 +0300 |
|---|---|---|
| committer | BonfaceKilz | 2025-07-07 07:56:57 +0300 |
| commit | 007b4ba9ff40a716235c10d224a38a22933c3eb7 (patch) | |
| tree | 60eb5d93706e485512fb0d270059c08365227197 /gn3/api/llm.py | |
| parent | 717f1e36b67b44522eedec246c7bfc5b66a8c5c1 (diff) | |
| download | genenetwork3-007b4ba9ff40a716235c10d224a38a22933c3eb7.tar.gz | |
refactor: Refactor gnqna fallback.
Diffstat (limited to 'gn3/api/llm.py')
| -rw-r--r-- | gn3/api/llm.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/gn3/api/llm.py b/gn3/api/llm.py index 7f6d49d..39f434a 100644 --- a/gn3/api/llm.py +++ b/gn3/api/llm.py @@ -75,24 +75,32 @@ def is_verified_anonymous_user(request_metadata): def with_gnqna_fallback(view_func): - """Allow fallback to GNQNA user if token auth fails.""" + """Allow fallback to GNQNA user if token auth fails or token is malformed.""" @wraps(view_func) def wrapper(*args, **kwargs): + def call_with_anonymous_fallback(): + return view_func.__wrapped__(*args, + **{**kwargs, "auth_token": None, "valid_anony": True}) + try: response = view_func(*args, **kwargs) - is_bad_token_response = ( + + is_invalid_token = ( isinstance(response, tuple) and len(response) == 2 and response[1] == 400 ) - if is_bad_token_response and is_verified_anonymous_user(request): - return view_func(*args, **{**kwargs, "auth_token": None, "valid_anony": True}) + + if is_invalid_token and is_verified_anonymous_user(request): + return call_with_anonymous_fallback() + return response - except DecodeError: + + except (DecodeError, ValueError): # occurs when trying to parse the token or auth results if is_verified_anonymous_user(request): - original_func = view_func.__wrapped__ - return original_func(*args, **{**kwargs, "auth_token": None, "valid_anony": True}) - raise # re-raise if anonymous access isn't allowed + return call_with_anonymous_fallback() + return view_func.__wrapped__(*args, **kwargs) + return wrapper |
