Support for policies (ro)

This commit is contained in:
2024-10-04 12:57:12 +02:00
parent db7be9e8e1
commit 075b8767e6
6 changed files with 403 additions and 112 deletions

View File

@ -3,3 +3,4 @@ from .nodes import Node
from .users import User
from .routes import Route
from .preauthkeys import PreAuthKey, v1ListPreAuthKeyRequest
from .policies import Policy

24
hsapi_client/policies.py Normal file
View File

@ -0,0 +1,24 @@
from pydantic import BaseModel, Field
from typing import Optional
# from datetime import datetime
from .model import HSAPICall
from .schemas import v1Policy
class v1PutPolicyResponse(BaseModel):
policy: str = Field(alias="policy", default=None)
class Policy(HSAPICall):
objectPath = "policy"
def get(self) -> v1Policy:
response = self.call('get')
return v1Policy(**response.json())
def put(self, data: v1Policy) -> v1Policy:
policy_txt = v1PutPolicyResponse(policy=data.json)
response = self.call('put', data=policy_txt)
return v1Policy(**response.json())

View File

@ -1,8 +1,11 @@
from typing import Optional, List
from pydantic import BaseModel, Field, computed_field
from typing import Optional, List, Union
from pydantic import BaseModel, Field, computed_field, field_serializer, field_validator, model_serializer
from datetime import datetime, timezone, timedelta
from enum import Enum
import json
import pyjson5
class v1RegisterMethod(str, Enum):
@ -58,6 +61,26 @@ class v1User(BaseModel):
createdAt: datetime = Field(alias="createdAt", default=None)
class v1Policy(BaseModel):
policy: dict = Field(alias="policy", default=None)
updatedAt: datetime = Field(alias="updatedAt", default=None)
@field_validator("policy", mode="before")
@classmethod
def json_to_dict(cls, v: str):
pydict = pyjson5.loads(v)
return pydict
@property
def minjson(self) -> str:
return json.dumps(self.policy)
@property
def json(self) -> str:
return json.dumps(self.policy, indent=2)
class v1Node(BaseModel):
"""
None model