dispatcher get request as 'str' only
yakkle opened this issue · 1 comments
yakkle commented
If I call dispatcher with request as bytes, that doesn't work.
def dispatch():
request_bytes = b'{"id": 1, "jsonrpc": "2.0", "method": "get_name"}'
await async_dispatch(request_bytes, methods, context=context)because of bytes.replace need bytes-like object in log.py.
Traceback (most recent call last):
File "/Users/yakkle/.virtualenvs/icon_rpc_server/lib/python3.7/site-packages/sanic/app.py", line 976, in handle_request
response = await response
File "/Users/yakkle/projects/icon_rpc_server/iconrpcserver/dispatcher/v3/version3.py", line 50, in dispatch
response = await async_dispatch(request.body, methods, context=context)
File "/Users/yakkle/.virtualenvs/icon_rpc_server/lib/python3.7/site-packages/jsonrpcserver/async_dispatcher.py", line 98, in dispatch
log_request(request, trim_log_values=trim_log_values)
File "/Users/yakkle/.virtualenvs/icon_rpc_server/lib/python3.7/site-packages/jsonrpcserver/dispatcher.py", line 82, in log_request
return log_(request, request_logger, logging.INFO, trim=trim_log_values, **kwargs)
File "/Users/yakkle/.virtualenvs/icon_rpc_server/lib/python3.7/site-packages/jsonrpcserver/log.py", line 78, in log_
message = message.replace("\n", "").replace(" ", " ").replace("{ ", "{")
TypeError: a bytes-like object is required, not 'str'
request object of sanic has json as dict type and body as bytes type.
I have to convert dict or bytes to str.
It would be better support request as bytes to avoid redundant converting.