...
This commit is contained in:
58
_archive/openrpc/factory.py
Normal file
58
_archive/openrpc/factory.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import json
|
||||
import os
|
||||
|
||||
import yaml # type: ignore
|
||||
|
||||
from heroserver.openrpc.model.openrpc_spec import (
|
||||
OpenRPCSpec,
|
||||
)
|
||||
from heroserver.openrpc.parser.parser import parser
|
||||
|
||||
|
||||
def openrpc_spec_write(path: str = "", dest: str = "") -> str:
|
||||
"""
|
||||
parse & write the specs
|
||||
dest is the path where we write the openrpc specs
|
||||
returns filename = f"{dest}/openrpc_spec.json"
|
||||
"""
|
||||
data = openrpc_dict(path=path)
|
||||
|
||||
out = json.dumps(data, indent=2)
|
||||
# print(out)
|
||||
|
||||
dest = os.path.expanduser(dest)
|
||||
os.makedirs(dest, exist_ok=True)
|
||||
|
||||
filename = f"{dest}/openrpc_spec.json"
|
||||
# Write the spec to the file
|
||||
with open(filename, "w") as f:
|
||||
f.write(out)
|
||||
print(f"OpenRPC specification (JSON) has been written to: {filename}")
|
||||
|
||||
yaml_filename = f"{dest}/openrpc_spec.yaml"
|
||||
with open(yaml_filename, "w") as f:
|
||||
yaml.dump(data, f, sort_keys=False)
|
||||
print(f"OpenRPC specification (YAML) has been written to: {yaml_filename}")
|
||||
|
||||
return filename
|
||||
|
||||
|
||||
def openrpc_spec(path: str = "") -> OpenRPCSpec:
|
||||
"""
|
||||
return openrpc object starting from spec path
|
||||
this is our python representation of OpenRPCSpec
|
||||
"""
|
||||
data = openrpc_dict(path=path)
|
||||
|
||||
spec_object = OpenRPCSpec.load(data)
|
||||
|
||||
return spec_object
|
||||
|
||||
|
||||
def openrpc_dict(path: str = "") -> dict:
|
||||
"""
|
||||
return openrpc dict starting from spec path
|
||||
"""
|
||||
data = parser(path=path)
|
||||
|
||||
return data
|
Reference in New Issue
Block a user