From f790e337bafc86adcf9df82895db2baf8444179a Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 16 Feb 2024 15:22:41 +0100 Subject: [PATCH] Axivion: Isolate authorization recipe It's going to be used in other recipes. Change-Id: I314f97cc596ce158b7d20e3bb963ca4e35bcb818 Reviewed-by: hjk --- src/plugins/axivion/axivionplugin.cpp | 45 ++++++++++++++++----------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index 9891bdc3c65..32b356847a8 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -541,13 +541,11 @@ static Group postDtoRecipe(const Storage> &dtoStorage) return recipe; }; -template -static Group fetchDataRecipe(const QUrl &url, const std::function &handler) +static Group authorizationRecipe() { const Storage passwordStorage; const Storage> dashboardStorage; const Storage> apiTokenStorage; - const Storage> dtoStorage; const auto onGetCredentialSetup = [](CredentialQuery &credential) { credential.setOperation(CredentialOperation::Get); @@ -610,20 +608,8 @@ static Group fetchDataRecipe(const QUrl &url, const std::functionm_apiToken) - return SetupResult::StopWithError; - - dtoStorage->credential = "AxToken " + *dd->m_apiToken; - dtoStorage->url = url; - return SetupResult::Continue; - }; - const auto onDtoDone = [dtoStorage, handler] { - if (dtoStorage->dtoData) - handler(*dtoStorage->dtoData); - }; - - const Group recipe { + return { + // TODO: Try unauthorized access first Group { LoopUntil([](int) { return !dd->m_apiToken; }), CredentialQueryTask(onGetCredentialSetup, onGetCredentialDone), @@ -642,7 +628,30 @@ static Group fetchDataRecipe(const QUrl &url, const std::function +static Group fetchDataRecipe(const QUrl &url, const std::function &handler) +{ + const Storage> dtoStorage; + + const auto onDtoSetup = [dtoStorage, url] { + if (!dd->m_apiToken) + return SetupResult::StopWithError; + + dtoStorage->credential = "AxToken " + *dd->m_apiToken; + dtoStorage->url = url; + return SetupResult::Continue; + }; + const auto onDtoDone = [dtoStorage, handler] { + if (dtoStorage->dtoData) + handler(*dtoStorage->dtoData); + }; + + const Group recipe { + authorizationRecipe(), Group { dtoStorage, onGroupSetup(onDtoSetup),