From d5c800d6def7ff5ee3a5028b0a7d6042690878c3 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Fri, 18 Mar 2022 08:34:24 +0100 Subject: [PATCH] Support new `auth_dialog` appkey workflow --- DiscoverOctoPrintAction.py | 25 +++++++++++++++++++++++++ qml/DiscoverOctoPrintAction.qml | 1 - 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/DiscoverOctoPrintAction.py b/DiscoverOctoPrintAction.py index acaf4de..c4b4888 100644 --- a/DiscoverOctoPrintAction.py +++ b/DiscoverOctoPrintAction.py @@ -553,11 +553,36 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: self._onRequestFailed(reply) return + json_data = None + if reply.operation() == QNetworkAccessManager.PostOperation: if ( "/plugin/appkeys/request" in reply.url().toString() ): # Initial AppKey request if http_status_code == 201 or http_status_code == 202: + try: + json_data = json.loads(bytes(reply.readAll()).decode("utf-8")) + except json.decoder.JSONDecodeError: + Logger.log( + "w", "Received invalid JSON from octoprint instance." + ) + + if json_data: + app_token = json_data["app_token"] # unused; app_token is included in location header + auth_dialog_url = json_data["auth_dialog"] + else: + ( + instance, + base_url, + basic_auth_username, + basic_auth_password, + ) = self._getInstanceInfo(self._appkey_instance_id) + + auth_dialog_url = base_url + + if auth_dialog_url: + self.openWebPage(auth_dialog_url) + Logger.log("w", "Start polling for AppKeys decision") if not self._appkey_request: return diff --git a/qml/DiscoverOctoPrintAction.qml b/qml/DiscoverOctoPrintAction.qml index 5966045..56a805c 100644 --- a/qml/DiscoverOctoPrintAction.qml +++ b/qml/DiscoverOctoPrintAction.qml @@ -320,7 +320,6 @@ Cura.MachineAction onClicked: { manager.requestApiKey(base.selectedInstance.getId()); - manager.openWebPage(base.selectedInstance.baseURL); } }