3
3
# Modules
4
4
from datetime import datetime , timedelta
5
5
6
- from requests import Session
7
-
8
6
from usps .timezones import LOCAL_TIMEZONE
9
- from usps .tracking import Package , Step , StatusNotAvailable
7
+ from usps .tracking import SESSION , Package , Step , StatusNotAvailable
10
8
11
9
# Handle mapping
12
10
UPS_MILESTONE_MAPPINGS = {
19
17
20
18
# Main class
21
19
class UPSTracking :
22
- _session : Session | None = None
23
20
_failcount : int = 0
24
21
25
22
@staticmethod
@@ -28,18 +25,15 @@ def __map_milestone_name(milestone: str) -> str:
28
25
29
26
@classmethod
30
27
def track_package (cls , tracking_number : str ) -> Package :
31
- if cls ._session is None :
32
- cls ._session = Session ()
33
-
34
28
try :
35
- if not cls . _session .cookies :
36
- cls . _session .get ("https://www.ups.com/track" , timeout = 1 )
29
+ if "X-XSRF-TOKEN-ST" not in SESSION .cookies :
30
+ SESSION .get ("https://www.ups.com/track" , timeout = 1 )
37
31
38
- response = cls . _session .post (
32
+ response = SESSION .post (
39
33
"https://webapis.ups.com/track/api/Track/GetStatus?loc=en_US" ,
40
34
json = {"Locale" : "en_US" , "TrackingNumber" : [tracking_number ]},
41
35
headers = {
42
- "X-XSRF-TOKEN" : cls . _session .cookies ["X-XSRF-TOKEN-ST" ]
36
+ "X-XSRF-TOKEN" : SESSION .cookies ["X-XSRF-TOKEN-ST" ]
43
37
},
44
38
timeout = 1
45
39
).json ()
@@ -49,7 +43,9 @@ def track_package(cls, tracking_number: str) -> Package:
49
43
raise StatusNotAvailable ("API request failed" )
50
44
51
45
cls ._failcount += 1
52
- cls ._session = Session ()
46
+ if "X-XSRF-TOKEN-ST" :
47
+ SESSION .cookies .pop ("X-XSRF-TOKEN-ST" )
48
+
53
49
return cls .track_package (tracking_number )
54
50
55
51
if response ["statusCode" ] != "200" :
0 commit comments