Skip to content

Commit

Permalink
Linter
Browse files Browse the repository at this point in the history
  • Loading branch information
drew2a committed Nov 29, 2022
1 parent fe4f13b commit cc7dfe7
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 25 deletions.
16 changes: 6 additions & 10 deletions src/tribler/gui/network/request/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ def __init__(
capture_errors: bool = True,
priority=QNetworkRequest.NormalPriority,
raw_response: bool = False,
manager: Optional[RequestManager] = None,
):
super().__init__()
self.logger = logging.getLogger(self.__class__.__name__)
Expand All @@ -51,20 +50,18 @@ def __init__(
self.method = method
self.capture_errors = capture_errors
self.raw_response = raw_response
self.raw_data = None
if data:
raw_data = json.dumps(data)
if raw_data:
self.raw_data = raw_data if issubclass(type(raw_data), bytes) else raw_data.encode('utf8')
self.raw_data = raw_data
if data and not self.raw_data:
self.raw_data = json.dumps(data).encode('utf8')

connect(self.on_finished_signal, on_finish)
connect(self.on_cancel_signal, on_cancel)

self.reply: Optional[QNetworkReply] = None # to hold the associated QNetworkReply object
self.manager: Optional[RequestManager] = None

# Pass the newly created object to the manager singleton, so the object can be dispatched immediately
self.time = time()
self.manager = manager

def _on_finished(self):
if not self.reply or not self.manager:
Expand All @@ -82,14 +79,13 @@ def _on_finished(self):
data = bytes(self.reply.readAll())

if self.raw_response:
self.logger.debug(f'Create a raw response')

self.logger.debug('Create a raw response')
header = self.reply.header(QNetworkRequest.ContentTypeHeader)
self.on_finished_signal.emit((data, header))
return

try:
self.logger.debug(f'Create a json response')
self.logger.debug('Create a json response')
result = json.loads(data)
except ValueError as e:
self.logger.exception(e)
Expand Down
Empty file.
44 changes: 44 additions & 0 deletions src/tribler/gui/network/request/tests/test_request.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from tribler.gui.network.request.request import Request


def test_default_constructor():
request = Request(
endpoint='endpoint'
)
assert request


def test_data_constructor():
""" Test that data becomes raw_data as an encoded json
"""
request = Request(
endpoint='endpoint',
data={
'key': 'value'
}
)
assert request.raw_data == b'{"key": "value"}'


def test_raw_data_constructor():
""" Test that raw_data remains the same
"""
request = Request(
endpoint='endpoint',
raw_data=b'raw_data'
)
assert request.raw_data == b'raw_data'


def test_raw_data_and_data_constructor():
""" Test that in the case raw_data and data have been passed into the constructor,
the raw_data would be chosen.
"""
request = Request(
endpoint='endpoint',
data={
'key': 'value'
},
raw_data=b'raw_data'
)
assert request.raw_data == b'raw_data'
27 changes: 13 additions & 14 deletions src/tribler/gui/network/request_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def add(self, request: Request):
request.reply = self.sendCustomRequest(qt_request, request.method.encode("utf8"), buf)
buf.setParent(request.reply)

connect(request.reply.finished, request._on_finished)
connect(request.reply.finished, request._on_finished) # pylint: disable=protected-access

def remove(self, request: Request):
self.active_requests.pop(request, None)
Expand All @@ -84,7 +84,7 @@ def update(self, request: Request, status: int):
performed_requests[request] = status

def show_error(self, request: Request, data: Dict):
text = self._get_message_from_error(data)
text = self.get_message_from_error(data)
if self.window.core_manager.shutting_down:
return

Expand All @@ -99,20 +99,19 @@ def on_close(_):
connect(error_dialog.button_clicked, on_close)
error_dialog.show()

def _get_base_url(self):
return "%s://%s:%d/" % (self.protocol, self.host, self.port)
def _get_base_url(self) -> str:
return f'{self.protocol}://{self.host}:{self.port}/'

@staticmethod
def _get_message_from_error(error: Dict):
return_error = None
if isinstance(error['error'], str):
return_error = error['error']
elif 'message' in error['error']:
return_error = error['error']['message']

if not return_error:
return json.dumps(error) # Just print the json object
return return_error
def get_message_from_error(d: Dict) -> str:
error = d.get('error', {})
if isinstance(error, str):
return error

if message := error.get('message'):
return message

return json.dumps(d)

def clear(self):
for req in list(self.active_requests.values()):
Expand Down
44 changes: 44 additions & 0 deletions src/tribler/gui/network/tests/test_request_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import pytest

from tribler.gui.network.request_manager import RequestManager


# pylint: disable=protected-access, redefined-outer-name


@pytest.fixture
def request_manager():
return RequestManager()


def test_get_base_string(request_manager: RequestManager):
assert request_manager._get_base_url() == 'http://localhost:20100/'


def test_get_message_from_error_string(request_manager: RequestManager):
message = request_manager.get_message_from_error(
{
'error': 'message'
}
)
assert message == 'message'


def test_get_message_from_error_dict_string(request_manager: RequestManager):
message = request_manager.get_message_from_error(
{
'error': {
'message': 'error message'
}
}
)
assert message == 'error message'


def test_get_message_from_error_any_dict(request_manager: RequestManager):
message = request_manager.get_message_from_error(
{
'key': 'value'
}
)
assert message == '{"key": "value"}'
2 changes: 1 addition & 1 deletion src/tribler/gui/tribler_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ def received_settings(self, settings):
return
# If we cannot receive the settings, stop Tribler with an option to send the crash report.
if 'error' in settings:
raise RuntimeError(RequestManager._get_message_from_error(settings))
raise RuntimeError(RequestManager.get_message_from_error(settings))

# If there is any pending dialog (likely download dialog or error dialog of setting not available),
# close the dialog
Expand Down

0 comments on commit cc7dfe7

Please sign in to comment.