use log_support
This commit is contained in:
parent
5ae3485411
commit
ba7f326e72
1 changed files with 14 additions and 8 deletions
|
@ -7,6 +7,7 @@ from twisted.python.failure import Failure
|
||||||
|
|
||||||
from txjsonrpc import jsonrpclib
|
from txjsonrpc import jsonrpclib
|
||||||
from lbrynet.core.Error import InvalidAuthenticationToken, InvalidHeaderError, SubhandlerError
|
from lbrynet.core.Error import InvalidAuthenticationToken, InvalidHeaderError, SubhandlerError
|
||||||
|
from lbrynet.core import log_support
|
||||||
from lbrynet.conf import settings
|
from lbrynet.conf import settings
|
||||||
from lbrynet.lbrynet_daemon.auth.util import APIKey, get_auth_message
|
from lbrynet.lbrynet_daemon.auth.util import APIKey, get_auth_message
|
||||||
from lbrynet.lbrynet_daemon.auth.client import LBRY_SECRET
|
from lbrynet.lbrynet_daemon.auth.client import LBRY_SECRET
|
||||||
|
@ -100,7 +101,11 @@ class AuthJSONRPCServer(AuthorizedBase):
|
||||||
def setup(self):
|
def setup(self):
|
||||||
return NotImplementedError()
|
return NotImplementedError()
|
||||||
|
|
||||||
def _render_error(self, request, failure, version=jsonrpclib.VERSION_1, response_code=FAILURE):
|
def _render_error(self, failure, request, version=jsonrpclib.VERSION_1, response_code=FAILURE,
|
||||||
|
log_failure=False, log_msg=None):
|
||||||
|
if log_failure:
|
||||||
|
msg = log_msg or "API Failure: %s"
|
||||||
|
log_support.failure(Failure(failure), log, msg)
|
||||||
err = JSONRPCException(Failure(failure), response_code)
|
err = JSONRPCException(Failure(failure), response_code)
|
||||||
fault = jsonrpclib.dumps(err, version=version)
|
fault = jsonrpclib.dumps(err, version=version)
|
||||||
self._set_headers(request, fault)
|
self._set_headers(request, fault)
|
||||||
|
@ -136,7 +141,7 @@ class AuthJSONRPCServer(AuthorizedBase):
|
||||||
parsed = jsonrpclib.loads(content)
|
parsed = jsonrpclib.loads(content)
|
||||||
except ValueError as err:
|
except ValueError as err:
|
||||||
log.warning("Unable to decode request json")
|
log.warning("Unable to decode request json")
|
||||||
self._render_error(request, err)
|
self._render_error(err, request)
|
||||||
return server.NOT_DONE_YET
|
return server.NOT_DONE_YET
|
||||||
|
|
||||||
function_name = parsed.get('method')
|
function_name = parsed.get('method')
|
||||||
|
@ -148,7 +153,7 @@ class AuthJSONRPCServer(AuthorizedBase):
|
||||||
try:
|
try:
|
||||||
self._run_subhandlers(request)
|
self._run_subhandlers(request)
|
||||||
except SubhandlerError as err:
|
except SubhandlerError as err:
|
||||||
self._render_error(request, err, version)
|
self._render_error(err, request, version)
|
||||||
return server.NOT_DONE_YET
|
return server.NOT_DONE_YET
|
||||||
|
|
||||||
reply_with_next_secret = False
|
reply_with_next_secret = False
|
||||||
|
@ -158,7 +163,7 @@ class AuthJSONRPCServer(AuthorizedBase):
|
||||||
self._verify_token(session_id, parsed, token)
|
self._verify_token(session_id, parsed, token)
|
||||||
except InvalidAuthenticationToken as err:
|
except InvalidAuthenticationToken as err:
|
||||||
log.warning("API validation failed")
|
log.warning("API validation failed")
|
||||||
self._render_error(request, err, version,
|
self._render_error(err, request, version,
|
||||||
response_code=AuthJSONRPCServer.UNAUTHORIZED)
|
response_code=AuthJSONRPCServer.UNAUTHORIZED)
|
||||||
return server.NOT_DONE_YET
|
return server.NOT_DONE_YET
|
||||||
self._update_session_secret(session_id)
|
self._update_session_secret(session_id)
|
||||||
|
@ -168,7 +173,7 @@ class AuthJSONRPCServer(AuthorizedBase):
|
||||||
function = self._get_jsonrpc_method(function_name)
|
function = self._get_jsonrpc_method(function_name)
|
||||||
except AttributeError as err:
|
except AttributeError as err:
|
||||||
log.warning("Unknown method: %s", function_name)
|
log.warning("Unknown method: %s", function_name)
|
||||||
self._render_error(request, err, version)
|
self._render_error(err, request, version)
|
||||||
return server.NOT_DONE_YET
|
return server.NOT_DONE_YET
|
||||||
|
|
||||||
if args == [{}]:
|
if args == [{}]:
|
||||||
|
@ -179,7 +184,7 @@ class AuthJSONRPCServer(AuthorizedBase):
|
||||||
# cancel the response if the connection is broken
|
# cancel the response if the connection is broken
|
||||||
notify_finish.addErrback(self._response_failed, d)
|
notify_finish.addErrback(self._response_failed, d)
|
||||||
d.addCallback(self._callback_render, request, version, reply_with_next_secret)
|
d.addCallback(self._callback_render, request, version, reply_with_next_secret)
|
||||||
d.addErrback(lambda err: self._render_error(request, err, version))
|
d.addErrback(self._render_error, request, version, log_failure=True)
|
||||||
return server.NOT_DONE_YET
|
return server.NOT_DONE_YET
|
||||||
|
|
||||||
def _register_user_session(self, session_id):
|
def _register_user_session(self, session_id):
|
||||||
|
@ -279,8 +284,9 @@ class AuthJSONRPCServer(AuthorizedBase):
|
||||||
self._set_headers(request, encoded_message, auth_required)
|
self._set_headers(request, encoded_message, auth_required)
|
||||||
self._render_message(request, encoded_message)
|
self._render_message(request, encoded_message)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
log.exception(err.message)
|
msg = "Failed to render API response: %s"
|
||||||
self._render_error(request, err, response_code=self.FAILURE, version=version)
|
self._render_error(err, request, response_code=self.FAILURE, version=version,
|
||||||
|
log_failure=True, log_msg=msg)
|
||||||
|
|
||||||
def _render_response(self, result, code):
|
def _render_response(self, result, code):
|
||||||
return defer.succeed({'result': result, 'code': code})
|
return defer.succeed({'result': result, 'code': code})
|
||||||
|
|
Loading…
Reference in a new issue