hsapi-client/headscale_api_client/users.py

42 lines
1.2 KiB
Python

from typing import Optional, List
from pydantic import BaseModel, Field
from .schemas import v1User
from .model import HSAPICall
class v1CreateUserRequest(BaseModel):
name: str = Field(alias="name", default=None)
class v1ListUsersResponse(BaseModel):
users: Optional[List[Optional[v1User]]] = Field(
alias="users", default=None)
class v1UserResponse(BaseModel):
user: Optional[v1User] = Field(alias="user", default=None)
class User(HSAPICall):
objectPath = "user"
def list(self) -> v1ListUsersResponse:
response = self.call('get')
return v1ListUsersResponse(**response.json())
def get(self, name: str) -> v1UserResponse:
response = self.call('get', call_path=name)
return v1UserResponse(**response.json())
def create(self, data: v1CreateUserRequest) -> v1UserResponse:
response = self.call('post', data=data)
return v1UserResponse(**response.json())
def delete(self, name: str) -> None:
self.call('delete', name)
def rename(self, oldName: str, newName: str) -> v1UserResponse:
response = self.call('post', call_path=f"{oldName}/rename/{newName}")
return v1UserResponse(**response.json())