85 lines
2.2 KiB
Python
85 lines
2.2 KiB
Python
from typing import Any, Dict, List, Optional, Union
|
|
|
|
|
|
class ServerVariableObject:
|
|
def __init__(
|
|
self,
|
|
default: str,
|
|
enum: Optional[List[str]] = None,
|
|
description: Optional[str] = None,
|
|
):
|
|
self.enum = enum
|
|
self.default = default
|
|
self.description = description
|
|
|
|
@classmethod
|
|
def load(cls, data: Dict[str, Any]) -> "ServerVariableObject":
|
|
return cls(
|
|
enum=data.get("enum"),
|
|
default=data["default"],
|
|
description=data.get("description"),
|
|
)
|
|
|
|
|
|
class ServerObject:
|
|
def __init__(
|
|
self,
|
|
name: str,
|
|
url: str,
|
|
summary: Optional[str] = None,
|
|
description: Optional[str] = None,
|
|
variables: Optional[Dict[str, ServerVariableObject]] = None,
|
|
):
|
|
self.name = name
|
|
self.url = url
|
|
self.summary = summary
|
|
self.description = description
|
|
self.variables = variables
|
|
|
|
@classmethod
|
|
def load(cls, data: Dict[str, Any]) -> "ServerObject":
|
|
variables = (
|
|
{
|
|
k: ServerVariableObject.load(v)
|
|
for k, v in data.get("variables", {}).items()
|
|
}
|
|
if "variables" in data
|
|
else None
|
|
)
|
|
return cls(
|
|
name=data["name"],
|
|
url=data["url"],
|
|
summary=data.get("summary"),
|
|
description=data.get("description"),
|
|
variables=variables,
|
|
)
|
|
|
|
|
|
class LinkObject:
|
|
def __init__(
|
|
self,
|
|
name: str,
|
|
method: str,
|
|
params: Dict[str, Any],
|
|
description: Optional[str] = None,
|
|
summary: Optional[str] = None,
|
|
server: Optional[ServerObject] = None,
|
|
):
|
|
self.name = name
|
|
self.description = description
|
|
self.summary = summary
|
|
self.method = method
|
|
self.params = params
|
|
self.server = server
|
|
|
|
@classmethod
|
|
def load(cls, data: Dict[str, Any]) -> "LinkObject":
|
|
return cls(
|
|
name=data["name"],
|
|
description=data.get("description"),
|
|
summary=data.get("summary"),
|
|
method=data["method"],
|
|
params=data["params"],
|
|
server=ServerObject.load(data["server"]) if "server" in data else None,
|
|
)
|