11from __future__ import annotations
22
33import base64
4- import json
54import platform
65import sys
6+ from json import dumps , loads
77from random import randint
88from time import sleep
99from typing import TYPE_CHECKING , Any , Mapping
@@ -95,7 +95,7 @@ def __init__(
9595 py_version = platform .python_version ()
9696 version = sys .modules ["auth0" ].__version__
9797
98- auth0_client = json . dumps (
98+ auth0_client = dumps (
9999 {
100100 "name" : "auth0-python" ,
101101 "version" : version ,
@@ -136,32 +136,41 @@ def MAX_REQUEST_RETRY_DELAY(self) -> int:
136136 def MIN_REQUEST_RETRY_DELAY (self ) -> int :
137137 return 100
138138
139- def get (
139+ def _request (
140140 self ,
141+ method : str ,
141142 url : str ,
142143 params : dict [str , Any ] | None = None ,
144+ data : RequestData | None = None ,
145+ json : RequestData | None = None ,
143146 headers : dict [str , str ] | None = None ,
147+ files : dict [str , Any ] | None = None ,
144148 ) -> Any :
145- request_headers = self .base_headers .copy ()
146- request_headers .update (headers or {})
147-
148149 # Track the API request attempt number
149150 attempt = 0
150151
151152 # Reset the metrics tracker
152153 self ._metrics = {"retries" : 0 , "backoff" : []}
153154
155+ kwargs = {
156+ k : v
157+ for k , v in {
158+ "params" : params ,
159+ "json" : json ,
160+ "data" : data ,
161+ "headers" : headers ,
162+ "files" : files ,
163+ "timeout" : self .options .timeout ,
164+ }.items ()
165+ if v is not None
166+ }
167+
154168 while True :
155169 # Increment attempt number
156170 attempt += 1
157171
158172 # Issue the request
159- response = requests .get (
160- url ,
161- params = params ,
162- headers = request_headers ,
163- timeout = self .options .timeout ,
164- )
173+ response = requests .request (method , url , ** kwargs )
165174
166175 # If the response did not have a 429 header, or the attempt number is greater than the configured retries, break
167176 if response .status_code != 429 or attempt > self ._retries :
@@ -177,6 +186,16 @@ def get(
177186 # Return the final Response
178187 return self ._process_response (response )
179188
189+ def get (
190+ self ,
191+ url : str ,
192+ params : dict [str , Any ] | None = None ,
193+ headers : dict [str , str ] | None = None ,
194+ ) -> Any :
195+ request_headers = self .base_headers .copy ()
196+ request_headers .update (headers or {})
197+ return self ._request ("GET" , url , params = params , headers = request_headers )
198+
180199 def post (
181200 self ,
182201 url : str ,
@@ -185,11 +204,7 @@ def post(
185204 ) -> Any :
186205 request_headers = self .base_headers .copy ()
187206 request_headers .update (headers or {})
188-
189- response = requests .post (
190- url , json = data , headers = request_headers , timeout = self .options .timeout
191- )
192- return self ._process_response (response )
207+ return self ._request ("POST" , url , json = data , headers = request_headers )
193208
194209 def file_post (
195210 self ,
@@ -199,27 +214,15 @@ def file_post(
199214 ) -> Any :
200215 headers = self .base_headers .copy ()
201216 headers .pop ("Content-Type" , None )
202-
203- response = requests .post (
204- url , data = data , files = files , headers = headers , timeout = self .options .timeout
205- )
206- return self ._process_response (response )
217+ return self ._request ("POST" , url , data = data , files = files , headers = headers )
207218
208219 def patch (self , url : str , data : RequestData | None = None ) -> Any :
209220 headers = self .base_headers .copy ()
210-
211- response = requests .patch (
212- url , json = data , headers = headers , timeout = self .options .timeout
213- )
214- return self ._process_response (response )
221+ return self ._request ("PATCH" , url , json = data , headers = headers )
215222
216223 def put (self , url : str , data : RequestData | None = None ) -> Any :
217224 headers = self .base_headers .copy ()
218-
219- response = requests .put (
220- url , json = data , headers = headers , timeout = self .options .timeout
221- )
222- return self ._process_response (response )
225+ return self ._request ("PUT" , url , json = data , headers = headers )
223226
224227 def delete (
225228 self ,
@@ -228,15 +231,7 @@ def delete(
228231 data : RequestData | None = None ,
229232 ) -> Any :
230233 headers = self .base_headers .copy ()
231-
232- response = requests .delete (
233- url ,
234- headers = headers ,
235- params = params or {},
236- json = data ,
237- timeout = self .options .timeout ,
238- )
239- return self ._process_response (response )
234+ return self ._request ("DELETE" , url , params = params , json = data , headers = headers )
240235
241236 def _calculate_wait (self , attempt : int ) -> int :
242237 # Retry the request. Apply a exponential backoff for subsequent attempts, using this formula:
@@ -317,7 +312,7 @@ def _error_message(self):
317312
318313class JsonResponse (Response ):
319314 def __init__ (self , response : requests .Response | RequestsResponse ) -> None :
320- content = json . loads (response .text )
315+ content = loads (response .text )
321316 super ().__init__ (response .status_code , content , response .headers )
322317
323318 def _error_code (self ) -> str :
0 commit comments