convert start, stop and reload_conf to return a dict

This commit is contained in:
gcarq 2018-06-22 03:32:45 +02:00
parent 556d507317
commit ada87ba3a0
6 changed files with 33 additions and 23 deletions

View File

@ -2,7 +2,7 @@ import threading
import logging import logging
# import json # import json
from flask import Flask, request from flask import Flask, request, jsonify
# from flask_restful import Resource, Api # from flask_restful import Resource, Api
from json import dumps from json import dumps
from freqtrade.rpc.rpc import RPC, RPCException from freqtrade.rpc.rpc import RPC, RPCException
@ -102,7 +102,7 @@ class ApiServerSuperWrap(RPC):
Starts TradeThread Starts TradeThread
""" """
msg = self._rpc_start() msg = self._rpc_start()
return msg return jsonify(msg)
def stop(self): def stop(self):
""" """
@ -110,4 +110,4 @@ class ApiServerSuperWrap(RPC):
Stops TradeThread Stops TradeThread
""" """
msg = self._rpc_stop() msg = self._rpc_stop()
return msg return jsonify(msg)

View File

@ -21,7 +21,7 @@ if len(argv) == 1:
if len(argv) == 3 and argv[1] == "daily": if len(argv) == 3 and argv[1] == "daily":
if str.isnumeric(argv[2]): if str.isnumeric(argv[2]):
get_url = 'http://localhost:5002/daily?timescale=' + argv[2] get_url = 'http://localhost:5002/daily?timescale=' + argv[2]
d=get(get_url).json() d = get(get_url).json()
print(d) print(d)
else: else:
print("\nThe second argument to daily must be an integer, 1,2,3 etc") print("\nThe second argument to daily must be an integer, 1,2,3 etc")

View File

@ -27,7 +27,17 @@ class RPCException(Exception):
raise RPCException('*Status:* `no active trade`') raise RPCException('*Status:* `no active trade`')
""" """
pass def __init__(self, message: str) -> None:
super().__init__(self)
self.message = message
def __str__(self):
return self.message
def __json__(self):
return {
'msg': self.message
}
class RPC(object): class RPC(object):
@ -288,28 +298,27 @@ class RPC(object):
value = fiat.convert_amount(total, 'BTC', symbol) value = fiat.convert_amount(total, 'BTC', symbol)
return output, total, symbol, value return output, total, symbol, value
def _rpc_start(self) -> str: def _rpc_start(self) -> Dict[str, str]:
""" Handler for start """ """ Handler for start """
if self._freqtrade.state == State.RUNNING: if self._freqtrade.state == State.RUNNING:
return '*Status:* `already running`' return {'status': 'already running'}
self._freqtrade.state = State.RUNNING self._freqtrade.state = State.RUNNING
return '`Starting trader ...`' return {'status': 'starting trader ...'}
def _rpc_stop(self) -> str: def _rpc_stop(self) -> Dict[str, str]:
""" Handler for stop """ """ Handler for stop """
if self._freqtrade.state == State.RUNNING: if self._freqtrade.state == State.RUNNING:
self._freqtrade.state = State.STOPPED self._freqtrade.state = State.STOPPED
return '`Stopping trader ...`' return {'status': 'stopping trader ...'}
return '*Status:* `already stopped`' return {'status': 'already stopped'}
def _rpc_reload_conf(self) -> str: def _rpc_reload_conf(self) -> Dict[str, str]:
""" Handler for reload_conf. """ """ Handler for reload_conf. """
self._freqtrade.state = State.RELOAD_CONF self._freqtrade.state = State.RELOAD_CONF
return '*Status:* `Reloading config ...`' return {'status': 'reloading config ...'}
# FIX: no test for this!!!!
def _rpc_forcesell(self, trade_id) -> None: def _rpc_forcesell(self, trade_id) -> None:
""" """
Handler for forcesell <id>. Handler for forcesell <id>.

View File

@ -266,7 +266,7 @@ class Telegram(RPC):
:return: None :return: None
""" """
msg = self._rpc_start() msg = self._rpc_start()
self._send_msg(msg, bot=bot) self._send_msg('Status: `{status}`'.format(**msg), bot=bot)
@authorized_only @authorized_only
def _stop(self, bot: Bot, update: Update) -> None: def _stop(self, bot: Bot, update: Update) -> None:
@ -278,7 +278,7 @@ class Telegram(RPC):
:return: None :return: None
""" """
msg = self._rpc_stop() msg = self._rpc_stop()
self._send_msg(msg, bot=bot) self._send_msg('Status: `{status}`'.format(**msg), bot=bot)
@authorized_only @authorized_only
def _reload_conf(self, bot: Bot, update: Update) -> None: def _reload_conf(self, bot: Bot, update: Update) -> None:
@ -290,7 +290,7 @@ class Telegram(RPC):
:return: None :return: None
""" """
msg = self._rpc_reload_conf() msg = self._rpc_reload_conf()
self._send_msg(msg, bot=bot) self._send_msg('Status: `{status}`'.format(**msg), bot=bot)
@authorized_only @authorized_only
def _forcesell(self, bot: Bot, update: Update) -> None: def _forcesell(self, bot: Bot, update: Update) -> None:

View File

@ -352,11 +352,11 @@ def test_rpc_start(mocker, default_conf) -> None:
freqtradebot.state = State.STOPPED freqtradebot.state = State.STOPPED
result = rpc._rpc_start() result = rpc._rpc_start()
assert '`Starting trader ...`' in result assert {'status': 'starting trader ...'} == result
assert freqtradebot.state == State.RUNNING assert freqtradebot.state == State.RUNNING
result = rpc._rpc_start() result = rpc._rpc_start()
assert '*Status:* `already running`' in result assert {'status': 'already running'} == result
assert freqtradebot.state == State.RUNNING assert freqtradebot.state == State.RUNNING
@ -378,11 +378,12 @@ def test_rpc_stop(mocker, default_conf) -> None:
freqtradebot.state = State.RUNNING freqtradebot.state = State.RUNNING
result = rpc._rpc_stop() result = rpc._rpc_stop()
assert '`Stopping trader ...`' in result assert {'status': 'stopping trader ...'} == result
assert freqtradebot.state == State.STOPPED assert freqtradebot.state == State.STOPPED
result = rpc._rpc_stop() result = rpc._rpc_stop()
assert '*Status:* `already stopped`' in result
assert {'status': 'already stopped'} == result
assert freqtradebot.state == State.STOPPED assert freqtradebot.state == State.STOPPED

View File

@ -670,7 +670,7 @@ def test_stop_handle(default_conf, update, mocker) -> None:
telegram._stop(bot=MagicMock(), update=update) telegram._stop(bot=MagicMock(), update=update)
assert freqtradebot.state == State.STOPPED assert freqtradebot.state == State.STOPPED
assert msg_mock.call_count == 1 assert msg_mock.call_count == 1
assert 'Stopping trader' in msg_mock.call_args_list[0][0][0] assert 'stopping trader' in msg_mock.call_args_list[0][0][0]
def test_stop_handle_already_stopped(default_conf, update, mocker) -> None: def test_stop_handle_already_stopped(default_conf, update, mocker) -> None:
@ -718,7 +718,7 @@ def test_reload_conf_handle(default_conf, update, mocker) -> None:
telegram._reload_conf(bot=MagicMock(), update=update) telegram._reload_conf(bot=MagicMock(), update=update)
assert freqtradebot.state == State.RELOAD_CONF assert freqtradebot.state == State.RELOAD_CONF
assert msg_mock.call_count == 1 assert msg_mock.call_count == 1
assert 'Reloading config' in msg_mock.call_args_list[0][0][0] assert 'reloading config' in msg_mock.call_args_list[0][0][0]
def test_forcesell_handle(default_conf, update, ticker, fee, ticker_sell_up, mocker) -> None: def test_forcesell_handle(default_conf, update, ticker, fee, ticker_sell_up, mocker) -> None: