Skip to content

Commit

Permalink
feedback from job
Browse files Browse the repository at this point in the history
  • Loading branch information
jackrobison committed Nov 14, 2016
1 parent f45a2cb commit 908c9a3
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions lbrynet/lbrynet_daemon/auth/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from twisted.python.failure import Failure

from txjsonrpc import jsonrpclib

from lbrynet.core import log_support
from lbrynet.core.Error import InvalidAuthenticationToken, InvalidHeaderError, SubhandlerError
from lbrynet.conf import settings
from lbrynet.lbrynet_daemon.auth.util import APIKey, get_auth_message
Expand All @@ -23,7 +23,11 @@ def default_decimal(obj):
class JSONRPCException(Exception):
def __init__(self, err, code):
self.faultCode = code
self.faultString = err.getTraceback()
self.err = err

@property
def faultString(self):
return self.err.getTraceback()


class AuthorizedBase(object):
Expand Down Expand Up @@ -98,7 +102,8 @@ def setup(self):
return NotImplementedError()

def _render_error(self, request, failure, version=jsonrpclib.VERSION_1, response_code=FAILURE):
fault = jsonrpclib.dumps(JSONRPCException(Failure(failure), response_code), version=version)
err = JSONRPCException(Failure(failure), response_code)
fault = jsonrpclib.dumps(err, version=version)
self._set_headers(request, fault)
if response_code != AuthJSONRPCServer.FAILURE:
request.setResponseCode(response_code)
Expand All @@ -108,12 +113,12 @@ def _render_error(self, request, failure, version=jsonrpclib.VERSION_1, response
def render(self, request):
notify_finish = request.notifyFinish()
assert self._check_headers(request), InvalidHeaderError

session = request.getSession()
session_id = session.uid

if self._use_authentication:
# if this is a new session, send a new secret and set the expiration, otherwise, session.touch()
# if this is a new session, send a new secret and set the expiration
# otherwise, session.touch()
if self._initialize_session(session_id):
def expire_session():
self._unregister_user_session(session_id)
Expand All @@ -131,7 +136,7 @@ def expire_session():
try:
parsed = jsonrpclib.loads(content)
except ValueError as err:
log.error("Unable to decode request json")
log.warning("Unable to decode request json")
self._render_error(request, err)
return server.NOT_DONE_YET

Expand All @@ -153,20 +158,24 @@ def expire_session():
try:
self._verify_token(session_id, parsed, token)
except InvalidAuthenticationToken as err:
log.error("API validation failed")
self._render_error(request, err, version, response_code=AuthJSONRPCServer.UNAUTHORIZED)
log.warning("API validation failed")
self._render_error(request, err, version,
response_code=AuthJSONRPCServer.UNAUTHORIZED)
return server.NOT_DONE_YET
self._update_session_secret(session_id)
reply_with_next_secret = True

try:
function = self._get_jsonrpc_method(function_name)
except AttributeError as err:
log.error("Unknown method: %s", function_name)
log.warning("Unknown method: %s", function_name)
self._render_error(request, err, version)
return server.NOT_DONE_YET

d = defer.maybeDeferred(function) if args == [{}] else defer.maybeDeferred(function, *args)
if args == [{}]:
d = defer.maybeDeferred(function)
else:
d = defer.maybeDeferred(function, *args)

# cancel the response if the connection is broken
notify_finish.addErrback(self._response_failed, d)
Expand Down Expand Up @@ -226,7 +235,8 @@ def _check_function_path(self, function_path):
return True

def _get_jsonrpc_method(self, function_path):
assert self._check_function_path(function_path), AttributeError(function_path)
if not self._check_function_path(function_path):
raise AttributeError(function_path)
return self.callable_methods.get(function_path)

def _initialize_session(self, session_id):
Expand Down Expand Up @@ -255,11 +265,8 @@ def _get_jsonrpc_version(self, version=None, id=None):

def _run_subhandlers(self, request):
for handler in self.subhandlers:
try:
assert handler(request)
except Exception as err:
log.error(err.message)
raise SubhandlerError(err.message)
if not handler(request):
raise SubhandlerError("Subhandler error processing request: %s", request)

def _callback_render(self, result, request, version, auth_required=False):
result_for_return = result if not isinstance(result, dict) else result['result']
Expand All @@ -273,6 +280,7 @@ def _callback_render(self, result, request, version, auth_required=False):
self._set_headers(request, encoded_message, auth_required)
self._render_message(request, encoded_message)
except Exception as err:
log.exception(err.message)
self._render_error(request, err, response_code=self.FAILURE, version=version)

def _render_response(self, result, code):
Expand Down

0 comments on commit 908c9a3

Please sign in to comment.