import httpx from typing import Optional from .Schema import ( RegisterUserRequest, LoginRequest, SetUserStatusRequest, APIResponse, ) from App.Portals.PortalRoutes import ANDROID from App.Portals.Model import Portal class AndroidClient: def __init__(self): self.base_url = "http://127.0.0.1:8080/" self.client = httpx.AsyncClient(base_url=self.base_url) async def register_user(self, request: RegisterUserRequest) -> APIResponse: """Register a new user.""" response = await self.client.post("/users/register", json=request.dict()) return APIResponse(**response.json()) async def login_user(self, request: LoginRequest) -> APIResponse: """Login an existing user.""" response = await self.client.post("/login", json=request.dict()) return APIResponse(**response.json()) async def logout_user(self, phone: str) -> APIResponse: """Logout a user by phone.""" response = await self.client.post(f"/logout/{phone}") return APIResponse(**response.json()) async def get_active_users(self) -> APIResponse: """Retrieve all active users.""" response = await self.client.get("/users/active") print(response.json()) return APIResponse(**response.json()) async def set_user_status(self, request: SetUserStatusRequest) -> APIResponse: """Enable or disable a user.""" response = await self.client.patch("/user/status", json=request.dict()) return APIResponse(**response.json()) async def get_users_list(self) -> APIResponse: """Retrieve all users (active and inactive).""" response = await self.client.get("/users") return APIResponse(**response.json()) async def get_user_stats(self, phone: Optional[str] = None) -> APIResponse: """Retrieve user statistics for a specific user or all users.""" url = f"/user/stats/{phone}" if phone else "/user/stats" response = await self.client.get(url) return APIResponse(**response.json()) async def close(self): """Close the client session.""" await self.client.aclose()