From 6eab5e2492323b43898c0c48977ba0fa8f5f9bbd Mon Sep 17 00:00:00 2001 From: Nino van Hooff Date: Tue, 7 Jan 2020 10:53:26 +0100 Subject: [PATCH] Add HttpRequestScope and fix the CompatibilityDialog CURA-6983 --- .../qml/dialogs/CompatibilityDialog.qml | 4 ++-- plugins/Toolbox/src/SubscriptionChecker.py | 24 ++++--------------- plugins/Toolbox/src/Toolbox.py | 3 +-- 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml index a6ce7fc865..85664898a8 100644 --- a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml @@ -54,7 +54,7 @@ UM.Dialog{ } Repeater { - model: toolbox.subscribedPackagesModel + model: subscribedPackagesModel Component { Item @@ -97,7 +97,7 @@ UM.Dialog{ } Repeater { - model: toolbox.subscribedPackagesModel + model: subscribedPackagesModel Component { Item diff --git a/plugins/Toolbox/src/SubscriptionChecker.py b/plugins/Toolbox/src/SubscriptionChecker.py index caac84566a..b096f5a9c0 100644 --- a/plugins/Toolbox/src/SubscriptionChecker.py +++ b/plugins/Toolbox/src/SubscriptionChecker.py @@ -1,6 +1,5 @@ import json import os -import platform from typing import Dict, Optional from PyQt5.QtCore import QObject @@ -10,6 +9,7 @@ from UM.Extension import Extension from UM.Logger import Logger from UM.Message import Message from UM.PluginRegistry import PluginRegistry +from UM.TaskManagement.HttpRequestScope import UltimakerCloudScope from cura.CuraApplication import CuraApplication from plugins.Toolbox.src.CloudApiModel import CloudApiModel from plugins.Toolbox.src.SubscribedPackagesModel import SubscribedPackagesModel @@ -22,10 +22,10 @@ class SubscriptionChecker(QObject, Extension): super().__init__() self._application = application # type: CuraApplication + self._scope = UltimakerCloudScope(application) self._model = SubscribedPackagesModel() self._application.initializationFinished.connect(self._onAppInitialized) - self._application.getCuraAPI().account.accessTokenChanged.connect(self._updateRequestHeader) # This is a plugin, so most of the components required are not ready when # this is initialized. Therefore, we wait until the application is ready. @@ -76,17 +76,16 @@ class SubscriptionChecker(QObject, Extension): plugin_path_prefix = PluginRegistry.getInstance().getPluginPath(self.getPluginId()) if plugin_path_prefix: path = os.path.join(plugin_path_prefix, compatibility_dialog_path) - self.compatibility_dialog_view = self._application.getInstance().createQmlComponent(path, {"toolbox": self}) + self.compatibility_dialog_view = self._application.createQmlComponent(path, {"subscribedPackagesModel": self._model}) def _getUserPackages(self, request_type: str) -> None: Logger.log("d", "Requesting [%s] metadata from server.", request_type) - self._updateRequestHeader() url = CloudApiModel.api_url_user_packages self._application.getHttpRequestManager().get(url, - headers_dict = self._request_headers, callback = self._onUserPackagesRequestFinished, - error_callback = self._onUserPackagesRequestFinished) + error_callback = self._onUserPackagesRequestFinished, + scope = self._scope) def _onUserPackagesRequestFinished(self, reply: "QNetworkReply", @@ -109,16 +108,3 @@ class SubscriptionChecker(QObject, Extension): self._handleCompatibilityData(json_data["data"]) except json.decoder.JSONDecodeError: Logger.log("w", "Received invalid JSON for user packages") - - def _updateRequestHeader(self): - # todo DRY, copied from Toolbox. To RequestManager? - self._request_headers = { - "User-Agent": "%s/%s (%s %s)" % (self._application.getApplicationName(), - self._application.getVersion(), - platform.system(), - platform.machine()) - } - access_token = self._application.getCuraAPI().account.accessToken - if access_token: - self._request_headers["Authorization"] = "Bearer {}".format(access_token) - diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index 624ba34094..5cc6353c63 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -17,7 +17,6 @@ from UM.i18n import i18nCatalog from UM.Version import Version from cura import ApplicationMetadata -from cura import UltimakerCloudAuthentication from cura.CuraApplication import CuraApplication from cura.Machines.ContainerTree import ContainerTree from plugins.Toolbox.src.CloudApiModel import CloudApiModel @@ -45,7 +44,7 @@ class Toolbox(QObject, Extension): self._download_request_data = None # type: Optional[HttpRequestData] self._download_progress = 0 # type: float self._is_downloading = False # type: bool - self._request_headers = dict() # type: Dict[str, str] + self._request_headers = dict() # type: Dict[str, str] # todo DRY headers, use scope self._updateRequestHeader() self._request_urls = {} # type: Dict[str, str]