...
This commit is contained in:
84
_archive/openrpc/model/server.py
Normal file
84
_archive/openrpc/model/server.py
Normal file
@@ -0,0 +1,84 @@
|
||||
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,
|
||||
)
|
Reference in New Issue
Block a user