Use scope instead of manual request header updates in Toolbox.py

CURA-6983
This commit is contained in:
Nino van Hooff 2020-01-10 08:57:02 +01:00
parent 6069096141
commit f79949a150

View file

@ -24,6 +24,7 @@ from plugins.Toolbox.src.CloudApiModel import CloudApiModel
from .AuthorsModel import AuthorsModel from .AuthorsModel import AuthorsModel
from .PackagesModel import PackagesModel from .PackagesModel import PackagesModel
from .CloudSync.SubscribedPackagesModel import SubscribedPackagesModel from .CloudSync.SubscribedPackagesModel import SubscribedPackagesModel
from .UltimakerCloudScope import UltimakerCloudScope
if TYPE_CHECKING: if TYPE_CHECKING:
from UM.TaskManagement.HttpRequestData import HttpRequestData from UM.TaskManagement.HttpRequestData import HttpRequestData
@ -46,8 +47,7 @@ class Toolbox(QObject, Extension):
self._download_request_data = None # type: Optional[HttpRequestData] self._download_request_data = None # type: Optional[HttpRequestData]
self._download_progress = 0 # type: float self._download_progress = 0 # type: float
self._is_downloading = False # type: bool self._is_downloading = False # type: bool
self._request_headers = dict() # type: Dict[str, str] # todo DRY headers, use scope self._scope = UltimakerCloudScope(application)
self._updateRequestHeader()
self._request_urls = {} # type: Dict[str, str] self._request_urls = {} # type: Dict[str, str]
self._to_update = [] # type: List[str] # Package_ids that are waiting to be updated self._to_update = [] # type: List[str] # Package_ids that are waiting to be updated
@ -105,7 +105,6 @@ class Toolbox(QObject, Extension):
self._restart_dialog_message = "" # type: str self._restart_dialog_message = "" # type: str
self._application.initializationFinished.connect(self._onAppInitialized) self._application.initializationFinished.connect(self._onAppInitialized)
self._application.getCuraAPI().account.accessTokenChanged.connect(self._updateRequestHeader)
# Signals: # Signals:
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@ -127,7 +126,6 @@ class Toolbox(QObject, Extension):
## Go back to the start state (welcome screen or loading if no login required) ## Go back to the start state (welcome screen or loading if no login required)
def _restart(self): def _restart(self):
self._updateRequestHeader()
# For an Essentials build, login is mandatory # For an Essentials build, login is mandatory
if not self._application.getCuraAPI().account.isLoggedIn and ApplicationMetadata.IsEnterpriseVersion: if not self._application.getCuraAPI().account.isLoggedIn and ApplicationMetadata.IsEnterpriseVersion:
self.setViewPage("welcome") self.setViewPage("welcome")
@ -135,17 +133,6 @@ class Toolbox(QObject, Extension):
self.setViewPage("loading") self.setViewPage("loading")
self._fetchPackageData() self._fetchPackageData()
def _updateRequestHeader(self):
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)
def _resetUninstallVariables(self) -> None: def _resetUninstallVariables(self) -> None:
self._package_id_to_uninstall = None # type: Optional[str] self._package_id_to_uninstall = None # type: Optional[str]
self._package_name_to_uninstall = "" self._package_name_to_uninstall = ""
@ -157,8 +144,8 @@ class Toolbox(QObject, Extension):
url = "{base_url}/packages/{package_id}/ratings".format(base_url = CloudApiModel.api_url, package_id = package_id) url = "{base_url}/packages/{package_id}/ratings".format(base_url = CloudApiModel.api_url, package_id = package_id)
data = "{\"data\": {\"cura_version\": \"%s\", \"rating\": %i}}" % (Version(self._application.getVersion()), rating) data = "{\"data\": {\"cura_version\": \"%s\", \"rating\": %i}}" % (Version(self._application.getVersion()), rating)
self._application.getHttpRequestManager().put(url, headers_dict = self._request_headers, self._application.getHttpRequestManager().put(url, data = data.encode(), scope = self._scope)
data = data.encode())
@pyqtSlot(str) @pyqtSlot(str)
def subscribe(self, package_id: str) -> None: def subscribe(self, package_id: str) -> None:
if self._application.getCuraAPI().account.isLoggedIn: if self._application.getCuraAPI().account.isLoggedIn:
@ -538,15 +525,14 @@ class Toolbox(QObject, Extension):
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
def _makeRequestByType(self, request_type: str) -> None: def _makeRequestByType(self, request_type: str) -> None:
Logger.log("d", "Requesting [%s] metadata from server.", request_type) Logger.log("d", "Requesting [%s] metadata from server.", request_type)
self._updateRequestHeader()
url = self._request_urls[request_type] url = self._request_urls[request_type]
callback = lambda r, rt = request_type: self._onDataRequestFinished(rt, r) callback = lambda r, rt = request_type: self._onDataRequestFinished(rt, r)
error_callback = lambda r, e, rt = request_type: self._onDataRequestError(rt, r, e) error_callback = lambda r, e, rt = request_type: self._onDataRequestError(rt, r, e)
self._application.getHttpRequestManager().get(url, self._application.getHttpRequestManager().get(url,
headers_dict = self._request_headers,
callback = callback, callback = callback,
error_callback = error_callback) error_callback = error_callback,
scope=self._scope)
@pyqtSlot(str) @pyqtSlot(str)
def startDownload(self, url: str) -> None: def startDownload(self, url: str) -> None:
@ -555,10 +541,12 @@ class Toolbox(QObject, Extension):
callback = lambda r: self._onDownloadFinished(r) callback = lambda r: self._onDownloadFinished(r)
error_callback = lambda r, e: self._onDownloadFailed(r, e) error_callback = lambda r, e: self._onDownloadFailed(r, e)
download_progress_callback = self._onDownloadProgress download_progress_callback = self._onDownloadProgress
request_data = self._application.getHttpRequestManager().get(url, headers_dict = self._request_headers, request_data = self._application.getHttpRequestManager().get(url,
callback = callback, callback = callback,
error_callback = error_callback, error_callback = error_callback,
download_progress_callback = download_progress_callback) download_progress_callback = download_progress_callback,
scope=self._scope
)
self._download_request_data = request_data self._download_request_data = request_data
self.setDownloadProgress(0) self.setDownloadProgress(0)