Much better code
This commit is contained in:
@ -1,14 +1,40 @@
|
||||
from .model import HSAPICall
|
||||
from headscale_api_client.schemas import (v1ListNodesResponse,
|
||||
v1GetNodeResponse,
|
||||
v1DeleteNodeResponse,
|
||||
v1ExpireNodeResponse, v1MoveNodeRequest,
|
||||
v1RenameNodeResponse,
|
||||
v1MoveNodeRequest,
|
||||
v1MoveNodeResponse,
|
||||
v1GetNodeRoutesResponse,
|
||||
v1SetTagsResponse,
|
||||
HeadscaleServiceSetTagsBody)
|
||||
from .model import HSAPICall, formatTags
|
||||
from .schemas import v1Route, v1Node
|
||||
from typing import Optional, List
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class v1SetTagsNodeRequest(BaseModel):
|
||||
tags: Optional[List[str]] = Field(alias="tags", default=None)
|
||||
|
||||
def model_post_init(self, ctx):
|
||||
self.tags = formatTags(self.tags)
|
||||
|
||||
|
||||
class v1MoveNodeRequest(BaseModel):
|
||||
user: Optional[str] = Field(alias="user", default=None)
|
||||
|
||||
|
||||
class v1BackfillNodeIPsRequest(BaseModel):
|
||||
confirmed: Optional[bool] = Field(alias="confirmed", default=True)
|
||||
|
||||
|
||||
class v1ListNodesResponse(BaseModel):
|
||||
nodes: Optional[List[Optional[v1Node]]] = Field(
|
||||
alias="nodes", default=None)
|
||||
|
||||
|
||||
class v1NodeResponse(BaseModel):
|
||||
node: Optional[v1Node] = Field(alias="node", default=None)
|
||||
|
||||
|
||||
class v1GetNodeRoutesResponse(BaseModel):
|
||||
routes: Optional[List[Optional[v1Route]]] = Field(
|
||||
alias="routes", default=None)
|
||||
|
||||
|
||||
class v1BackfillNodeIPsResponse(BaseModel):
|
||||
changes: Optional[List[str]] = Field(alias="changes", default=None)
|
||||
|
||||
|
||||
class Node(HSAPICall):
|
||||
@ -19,30 +45,34 @@ class Node(HSAPICall):
|
||||
response = self.call('get')
|
||||
return v1ListNodesResponse(**response.json())
|
||||
|
||||
def get(self, nodeId: str) -> v1GetNodeResponse:
|
||||
def get(self, nodeId: str) -> v1NodeResponse:
|
||||
response = self.call('get', call_path=nodeId)
|
||||
return v1GetNodeResponse(**response.json())
|
||||
return v1NodeResponse(**response.json())
|
||||
|
||||
def delete(self, nodeId: str) -> v1DeleteNodeResponse:
|
||||
response = self.call('delete', call_path=nodeId)
|
||||
return v1DeleteNodeResponse(**response.json())
|
||||
def delete(self, nodeId: str) -> None:
|
||||
self.call('delete', call_path=nodeId)
|
||||
|
||||
def expire(self, nodeId: str) -> v1ExpireNodeResponse:
|
||||
response = self.call('post', f'{nodeId}/expire')
|
||||
return v1ExpireNodeResponse()(**response.json())
|
||||
def expire(self, nodeId: str) -> None:
|
||||
self.call('post', f'{nodeId}/expire')
|
||||
|
||||
def rename(self, nodeId: str, newName: str) -> v1RenameNodeResponse:
|
||||
def rename(self, nodeId: str, newName: str) -> v1NodeResponse:
|
||||
response = self.call('post', f'{nodeId}/rename/{newName}')
|
||||
return v1RenameNodeResponse(**response.json())
|
||||
return v1NodeResponse(**response.json())
|
||||
|
||||
def move(self, nodeId: str, data: v1MoveNodeRequest) -> v1MoveNodeResponse:
|
||||
def move(self, nodeId: str, data: v1MoveNodeRequest) -> v1NodeResponse:
|
||||
response = self.call('post', f'{nodeId}/user', data)
|
||||
return v1MoveNodeResponse()(**response.json())
|
||||
return v1NodeResponse(**response.json())
|
||||
|
||||
def routes(self, nodeId: str) -> v1GetNodeRoutesResponse:
|
||||
response = self.call('get', f'{nodeId}/routes')
|
||||
return v1GetNodeRoutesResponse(**response.json())
|
||||
|
||||
def setTags(self, nodeId: str, data: HeadscaleServiceSetTagsBody) -> v1SetTagsResponse:
|
||||
def setTags(self, nodeId: str, data: v1SetTagsNodeRequest) -> v1NodeResponse:
|
||||
response = self.call('post', f'{nodeId}/tags', data)
|
||||
return v1SetTagsResponse(**response.json())
|
||||
return v1NodeResponse(**response.json())
|
||||
|
||||
# Broken on server
|
||||
def backfillips(self, confirmed: bool = True) -> v1BackfillNodeIPsResponse:
|
||||
response = self.call(
|
||||
'post', f'/backfillips?confirmed={confirmed}')
|
||||
return v1BackfillNodeIPsResponse(**response.json())
|
||||
|
||||
Reference in New Issue
Block a user