Skip to content

Commit f404ed5

Browse files
committed
feat: replace requests with httpx
1 parent d3305fa commit f404ed5

32 files changed

+784
-898
lines changed

descope/__init__.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,37 @@
3939
UserPasswordFirebase,
4040
UserPasswordPbkdf2,
4141
)
42+
43+
__all__ = [
44+
"COOKIE_DATA_NAME",
45+
"REFRESH_SESSION_COOKIE_NAME",
46+
"REFRESH_SESSION_TOKEN_NAME",
47+
"SESSION_COOKIE_NAME",
48+
"SESSION_TOKEN_NAME",
49+
"AccessKeyLoginOptions",
50+
"DeliveryMethod",
51+
"LoginOptions",
52+
"SignUpOptions",
53+
"DescopeClient",
54+
"API_RATE_LIMIT_RETRY_AFTER_HEADER",
55+
"ERROR_TYPE_API_RATE_LIMIT",
56+
"ERROR_TYPE_SERVER_ERROR",
57+
"AuthException",
58+
"RateLimitException",
59+
"AssociatedTenant",
60+
"SAMLIDPAttributeMappingInfo",
61+
"SAMLIDPGroupsMappingInfo",
62+
"SAMLIDPRoleGroupMappingInfo",
63+
"AttributeMapping",
64+
"OIDCAttributeMapping",
65+
"RoleMapping",
66+
"SSOOIDCSettings",
67+
"SSOSAMLSettings",
68+
"SSOSAMLSettingsByMetadata",
69+
"UserObj",
70+
"UserPassword",
71+
"UserPasswordBcrypt",
72+
"UserPasswordDjango",
73+
"UserPasswordFirebase",
74+
"UserPasswordPbkdf2",
75+
]

descope/auth.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
except ImportError:
1717
from pkg_resources import get_distribution
1818

19-
import requests
19+
import httpx
2020
from email_validator import EmailNotValidError, validate_email
2121
from jwt import ExpiredSignatureError, ImmatureSignatureError
2222

@@ -122,14 +122,14 @@ def do_get(
122122
self,
123123
uri: str,
124124
params=None,
125-
allow_redirects=None,
125+
follow_redirects=None,
126126
pswd: str | None = None,
127-
) -> requests.Response:
128-
response = requests.get(
127+
) -> httpx.Response:
128+
response = httpx.get(
129129
f"{self.base_url}{uri}",
130130
headers=self._get_default_headers(pswd),
131131
params=params,
132-
allow_redirects=allow_redirects,
132+
follow_redirects=follow_redirects,
133133
verify=self.secure,
134134
timeout=self.timeout_seconds,
135135
)
@@ -142,12 +142,12 @@ def do_post(
142142
body: dict | list[dict] | list[str] | None,
143143
params=None,
144144
pswd: str | None = None,
145-
) -> requests.Response:
146-
response = requests.post(
145+
) -> httpx.Response:
146+
response = httpx.post(
147147
f"{self.base_url}{uri}",
148148
headers=self._get_default_headers(pswd),
149149
json=body,
150-
allow_redirects=False,
150+
follow_redirects=False,
151151
verify=self.secure,
152152
params=params,
153153
timeout=self.timeout_seconds,
@@ -161,12 +161,12 @@ def do_patch(
161161
body: dict | list[dict] | list[str] | None,
162162
params=None,
163163
pswd: str | None = None,
164-
) -> requests.Response:
165-
response = requests.patch(
164+
) -> httpx.Response:
165+
response = httpx.patch(
166166
f"{self.base_url}{uri}",
167167
headers=self._get_default_headers(pswd),
168168
json=body,
169-
allow_redirects=False,
169+
follow_redirects=False,
170170
verify=self.secure,
171171
params=params,
172172
timeout=self.timeout_seconds,
@@ -176,12 +176,12 @@ def do_patch(
176176

177177
def do_delete(
178178
self, uri: str, params=None, pswd: str | None = None
179-
) -> requests.Response:
180-
response = requests.delete(
179+
) -> httpx.Response:
180+
response = httpx.delete(
181181
f"{self.base_url}{uri}",
182182
params=params,
183183
headers=self._get_default_headers(pswd),
184-
allow_redirects=False,
184+
follow_redirects=False,
185185
verify=self.secure,
186186
timeout=self.timeout_seconds,
187187
)
@@ -419,7 +419,7 @@ def _raise_from_response(self, response):
419419

420420
def _fetch_public_keys(self) -> None:
421421
# This function called under mutex protection so no need to acquire it once again
422-
response = requests.get(
422+
response = httpx.get(
423423
f"{self.base_url}{EndpointsV2.public_key_path}/{self.project_id}",
424424
headers=self._get_default_headers(),
425425
verify=self.secure,

descope/authmethod/enchantedlink.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
import requests
3+
import httpx
44

55
from descope._auth_base import AuthBase
66
from descope.auth import Auth
@@ -197,5 +197,5 @@ def _compose_get_session_body(pending_ref: str) -> dict:
197197
return {"pendingRef": pending_ref}
198198

199199
@staticmethod
200-
def _get_pending_ref_from_response(response: requests.Response) -> dict:
200+
def _get_pending_ref_from_response(response: httpx.Response) -> dict:
201201
return response.json()

descope/authmethod/webauthn.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Iterable, Optional, Union
22

3-
from requests import Response
3+
from httpx import Response
44

55
from descope._auth_base import AuthBase
66
from descope.common import (

descope/descope_client.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from typing import Iterable
44

5-
import requests
5+
import httpx
66

77
from descope.auth import Auth # noqa: F401
88
from descope.authmethod.enchantedlink import EnchantedLink # noqa: F401
@@ -362,15 +362,15 @@ def validate_and_refresh_session(
362362
session_token, refresh_token, audience
363363
)
364364

365-
def logout(self, refresh_token: str) -> requests.Response:
365+
def logout(self, refresh_token: str) -> httpx.Response:
366366
"""
367367
Logout user from current session and revoke the refresh_token. After calling this function,
368368
you must invalidate or remove any cookies you have created.
369369
370370
Args:
371371
refresh_token (str): The refresh token
372372
373-
Return value (requests.Response): returns the response from the Descope server
373+
Return value (httpx.Response): returns the response from the Descope server
374374
375375
Raise:
376376
AuthException: Exception is raised if session is not authorized or another error occurs
@@ -385,15 +385,15 @@ def logout(self, refresh_token: str) -> requests.Response:
385385
uri = EndpointsV1.logout_path
386386
return self._auth.do_post(uri, {}, None, refresh_token)
387387

388-
def logout_all(self, refresh_token: str) -> requests.Response:
388+
def logout_all(self, refresh_token: str) -> httpx.Response:
389389
"""
390390
Logout user from all active sessions and revoke the refresh_token. After calling this function,
391391
you must invalidate or remove any cookies you have created.
392392
393393
Args:
394394
refresh_token (str): The refresh token
395395
396-
Return value (requests.Response): returns the response from the Descope server
396+
Return value (httpx.Response): returns the response from the Descope server
397397
398398
Raise:
399399
AuthException: Exception is raised if session is not authorized or another error occurs
@@ -431,7 +431,7 @@ def me(self, refresh_token: str) -> dict:
431431

432432
uri = EndpointsV1.me_path
433433
response = self._auth.do_get(
434-
uri=uri, params=None, allow_redirects=None, pswd=refresh_token
434+
uri=uri, params=None, follow_redirects=None, pswd=refresh_token
435435
)
436436
return response.json()
437437

@@ -513,7 +513,7 @@ def history(self, refresh_token: str) -> list[dict]:
513513

514514
uri = EndpointsV1.history_path
515515
response = self._auth.do_get(
516-
uri=uri, params=None, allow_redirects=None, pswd=refresh_token
516+
uri=uri, params=None, follow_redirects=None, pswd=refresh_token
517517
)
518518
return response.json()
519519

0 commit comments

Comments
 (0)