Spaces:
Configuration error
Configuration error
import requests | |
from typing import List, Dict, Any, Optional | |
from .exceptions import UnauthorizedError, NotFoundError | |
class UsersManagementClient: | |
def __init__(self, base_url: str, api_key: Optional[str] = None): | |
self.base_url = base_url.rstrip("/") | |
self.api_key = api_key | |
def _get_headers(self) -> Dict[str, str]: | |
headers = {"Content-Type": "application/json"} | |
if self.api_key: | |
headers["Authorization"] = f"Bearer {self.api_key}" | |
return headers | |
def list_users(self, params: Optional[Dict[str, Any]] = None) -> List[Dict[str, Any]]: | |
"""List users (GET /user/list)""" | |
url = f"{self.base_url}/user/list" | |
response = requests.get(url, headers=self._get_headers(), params=params) | |
if response.status_code == 401: | |
raise UnauthorizedError(response.text) | |
response.raise_for_status() | |
return response.json().get("users", response.json()) | |
def get_user(self, user_id: Optional[str] = None) -> Dict[str, Any]: | |
"""Get user info (GET /user/info)""" | |
url = f"{self.base_url}/user/info" | |
params = {"user_id": user_id} if user_id else {} | |
response = requests.get(url, headers=self._get_headers(), params=params) | |
if response.status_code == 401: | |
raise UnauthorizedError(response.text) | |
if response.status_code == 404: | |
raise NotFoundError(response.text) | |
response.raise_for_status() | |
return response.json() | |
def create_user(self, user_data: Dict[str, Any]) -> Dict[str, Any]: | |
"""Create a new user (POST /user/new)""" | |
url = f"{self.base_url}/user/new" | |
response = requests.post(url, headers=self._get_headers(), json=user_data) | |
if response.status_code == 401: | |
raise UnauthorizedError(response.text) | |
response.raise_for_status() | |
return response.json() | |
def delete_user(self, user_ids: List[str]) -> Dict[str, Any]: | |
"""Delete users (POST /user/delete)""" | |
url = f"{self.base_url}/user/delete" | |
response = requests.post(url, headers=self._get_headers(), json={"user_ids": user_ids}) | |
if response.status_code == 401: | |
raise UnauthorizedError(response.text) | |
response.raise_for_status() | |
return response.json() | |