feat: Add script to print OpenAPI JSON
This will allow generating OpenAPI clients in multiple languages without relying on manually updating the self-written client.
This commit is contained in:
parent
93c1dff71b
commit
d3d967e961
@ -12,4 +12,5 @@ def start_webserver(args: Dict[str, Any]) -> None:
|
|||||||
|
|
||||||
# Initialize configuration
|
# Initialize configuration
|
||||||
config = Configuration(args, RunMode.WEBSERVER).get_config()
|
config = Configuration(args, RunMode.WEBSERVER).get_config()
|
||||||
ApiServer(config, standalone=True)
|
api_server = ApiServer(config, standalone=True)
|
||||||
|
api_server.start_api()
|
||||||
|
@ -68,8 +68,10 @@ class ApiServer(RPCHandler):
|
|||||||
default_response_class=FTJSONResponse,
|
default_response_class=FTJSONResponse,
|
||||||
)
|
)
|
||||||
self.configure_app(self.app, self._config)
|
self.configure_app(self.app, self._config)
|
||||||
|
# self.start_api()
|
||||||
|
|
||||||
self.start_api()
|
def get_open_api_json(self):
|
||||||
|
return self.app.openapi()
|
||||||
|
|
||||||
def add_rpc_handler(self, rpc: RPC):
|
def add_rpc_handler(self, rpc: RPC):
|
||||||
"""
|
"""
|
||||||
|
@ -38,6 +38,7 @@ class RPCManager:
|
|||||||
logger.info('Enabling rpc.api_server')
|
logger.info('Enabling rpc.api_server')
|
||||||
from freqtrade.rpc.api_server import ApiServer
|
from freqtrade.rpc.api_server import ApiServer
|
||||||
apiserver = ApiServer(config)
|
apiserver = ApiServer(config)
|
||||||
|
apiserver.start_api()
|
||||||
apiserver.add_rpc_handler(self._rpc)
|
apiserver.add_rpc_handler(self._rpc)
|
||||||
self.registered_modules.append(apiserver)
|
self.registered_modules.append(apiserver)
|
||||||
|
|
||||||
|
19
scripts/openapi.py
Executable file
19
scripts/openapi.py
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
|
||||||
|
from freqtrade.rpc.api_server import ApiServer
|
||||||
|
|
||||||
|
|
||||||
|
def main(indent: int):
|
||||||
|
openapi_dict = ApiServer({"api_server": {}}).get_open_api_json()
|
||||||
|
print(json.dumps(openapi_dict, indent=indent), flush=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(description="Simply outputs the OpenAPI JSON of the REST API")
|
||||||
|
parser.add_argument("-i", "--indent", type=int, default=2)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
main(args.indent)
|
@ -320,6 +320,7 @@ def test_api_run(default_conf, mocker, caplog):
|
|||||||
mocker.patch('freqtrade.rpc.api_server.webserver.UvicornServer', server_mock)
|
mocker.patch('freqtrade.rpc.api_server.webserver.UvicornServer', server_mock)
|
||||||
|
|
||||||
apiserver = ApiServer(default_conf)
|
apiserver = ApiServer(default_conf)
|
||||||
|
apiserver.start_api()
|
||||||
apiserver.add_rpc_handler(RPC(get_patched_freqtradebot(mocker, default_conf)))
|
apiserver.add_rpc_handler(RPC(get_patched_freqtradebot(mocker, default_conf)))
|
||||||
|
|
||||||
assert server_mock.call_count == 1
|
assert server_mock.call_count == 1
|
||||||
@ -395,6 +396,7 @@ def test_api_cleanup(default_conf, mocker, caplog):
|
|||||||
mocker.patch('freqtrade.rpc.api_server.webserver.UvicornServer', server_mock)
|
mocker.patch('freqtrade.rpc.api_server.webserver.UvicornServer', server_mock)
|
||||||
|
|
||||||
apiserver = ApiServer(default_conf)
|
apiserver = ApiServer(default_conf)
|
||||||
|
apiserver.start_api()
|
||||||
apiserver.add_rpc_handler(RPC(get_patched_freqtradebot(mocker, default_conf)))
|
apiserver.add_rpc_handler(RPC(get_patched_freqtradebot(mocker, default_conf)))
|
||||||
|
|
||||||
apiserver.cleanup()
|
apiserver.cleanup()
|
||||||
|
Loading…
Reference in New Issue
Block a user