Ali2206 commited on
Commit
546d08e
·
verified ·
1 Parent(s): d1ab767

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -65
app.py CHANGED
@@ -84,75 +84,46 @@ class TokenManager:
84
  def __init__(self):
85
  self.token = None
86
  self.last_refresh = 0
87
- self.expires_in = 3600 # Default expiry
88
-
89
- def _make_auth_request(self, payload: Dict[str, Any]) -> Optional[Dict[str, Any]]:
90
- """Make authentication request with multiple content-type attempts"""
91
- content_types = [
92
- ("application/json", lambda d: {"json": d}),
93
- ("application/x-www-form-urlencoded", lambda d: {"data": d}),
94
- ]
95
-
96
- for content_type, payload_processor in content_types:
97
- try:
98
- headers = {
99
- "Content-Type": content_type,
100
- "Accept": "application/json"
101
- }
102
- res = requests.post(
103
- f"{BACKEND_URL}/auth/login",
104
- headers=headers,
105
- **payload_processor(payload),
106
- timeout=10
107
- )
108
- if res.status_code == 200:
109
- return res.json()
110
- logger.debug(f"Attempt with {content_type} failed: {res.status_code}")
111
- except Exception as e:
112
- logger.debug(f"Request with {content_type} failed: {str(e)}")
113
-
114
- return None
115
-
116
- def refresh_token(self) -> str:
117
- """Obtain a new token with retry logic"""
118
- payload = {
119
- "username": ADMIN_CREDENTIALS["email"],
120
- "password": ADMIN_CREDENTIALS["password"],
121
- "device_token": "admin-console"
122
  }
123
 
124
- for attempt in range(1, MAX_TOKEN_RETRIES + 1):
125
- try:
126
- logger.info(f"Attempting token refresh (attempt {attempt})")
127
- response = self._make_auth_request(payload)
128
-
129
- if response and "access_token" in response:
130
- self.token = response["access_token"]
131
- self.expires_in = response.get("expires_in", 3600)
132
- self.last_refresh = time.time()
133
- logger.info("Successfully refreshed admin token")
134
- return self.token
135
-
136
- logger.warning(f"Token refresh failed: {response}")
137
-
138
- except Exception as e:
139
- logger.error(f"Token refresh error: {str(e)}")
140
-
141
- if attempt < MAX_TOKEN_RETRIES:
142
- delay = TOKEN_RETRY_DELAY * (2 ** (attempt - 1)) # Exponential backoff
143
- time.sleep(delay)
144
-
145
- raise HTTPException(
146
- status_code=500,
147
- detail="Failed to obtain admin token after multiple attempts"
148
- )
149
-
150
- def get_token(self) -> str:
151
- """Get current valid token, refreshing if needed"""
152
  if not self.token or (time.time() - self.last_refresh) > (self.expires_in - 60):
153
- return self.refresh_token()
 
154
  return self.token
155
-
156
  token_manager = TokenManager()
157
 
158
  # ======================
 
84
  def __init__(self):
85
  self.token = None
86
  self.last_refresh = 0
87
+ self.expires_in = 3600
88
+ self.backend_url = "https://rocketfarmstudios-cps-api.hf.space"
89
+ self.credentials = {
90
+ "username": "yakdhanali97@gmail.com",
91
+ "password": "123456",
92
+ "device_token": "admin-device-token"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
 
95
+ async def _try_login(self, session):
96
+ try:
97
+ async with session.post(
98
+ f"{self.backend_url}/auth/login",
99
+ json=self.credentials,
100
+ timeout=10
101
+ ) as response:
102
+ if response.status == 200:
103
+ data = await response.json()
104
+ return data.get("access_token")
105
+ else:
106
+ error = await response.text()
107
+ logger.error(f"Login failed: {response.status} - {error}")
108
+ return None
109
+ except Exception as e:
110
+ logger.error(f"Login error: {str(e)}")
111
+ return None
112
+
113
+ async def refresh_token(self):
114
+ async with aiohttp.ClientSession() as session:
115
+ for attempt in range(3):
116
+ token = await self._try_login(session)
117
+ if token:
118
+ return token
119
+ await asyncio.sleep(2 ** attempt) # Exponential backoff
120
+ raise Exception("Failed to obtain admin token after multiple attempts")
121
+
122
+ async def get_token(self):
123
  if not self.token or (time.time() - self.last_refresh) > (self.expires_in - 60):
124
+ self.token = await self.refresh_token()
125
+ self.last_refresh = time.time()
126
  return self.token
 
127
  token_manager = TokenManager()
128
 
129
  # ======================