|
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() |
|
|