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); } }