From 1ef81e8344e41a078819013c1e455f7072d19841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=80=D0=B5=D0=BF=D0=BE=D0=B4=D0=BE=D0=B1=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=90=D0=BB=D0=B5=D0=BD?= Date: Fri, 23 Sep 2022 17:29:02 +0300 Subject: [PATCH] Committing updates. --- src/app/Common.cpp | 37 ++++++++----------- src/app/Common.hpp | 5 +-- src/modules/Workers/WebService/WebService.cpp | 7 ++-- src/modules/Workers/WebSocket/WebSocket.cpp | 3 +- 4 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/app/Common.cpp b/src/app/Common.cpp index 33ecbff..a2c3313 100644 --- a/src/app/Common.cpp +++ b/src/app/Common.cpp @@ -320,9 +320,9 @@ namespace Apostol { } //-------------------------------------------------------------------------------------------------------------- - void CCustomModule::CreateAccessToken(const CProvider &Provider, const CString &Application, CContext &Context) { + void CCustomModule::CreateAccessToken(CContext &Context, CProvider &Provider, const CString &Application) { - auto OnDone = [this, &Context](CTCPConnection *Sender) { + auto OnDone = [this, &Context, &Provider](CTCPConnection *Sender) { auto pConnection = dynamic_cast (Sender); auto pReply = pConnection->Reply(); @@ -337,18 +337,24 @@ namespace Apostol { Context.Tokens().Values("access_token", Json["access_token"].AsString()); + Provider.KeyStatus(ksSuccess); + ModuleStatus(Context); + } else { + Provider.KeyStatus(ksFailed); } return true; }; - auto OnFail = [&Context](CTCPConnection *Sender, const Delphi::Exception::Exception &E) { + auto OnFail = [&Context, &Provider](CTCPConnection *Sender, const Delphi::Exception::Exception &E) { Context.SetStatus(csInitialized); auto pConnection = dynamic_cast (Sender); auto pClient = dynamic_cast (pConnection->Client()); + Provider.KeyStatus(ksFailed); + DebugReply(pConnection->Reply()); Log()->Error(APP_LOG_ERR, 0, "[%s:%d] %s", pClient->Host().c_str(), pClient->Port(), E.what()); @@ -371,16 +377,16 @@ namespace Apostol { } //-------------------------------------------------------------------------------------------------------------- - void CCustomModule::FetchProviders(CDateTime Now, CContext &Context) { + void CCustomModule::CheckProviders(CContext &Context, CDateTime Now) { for (int i = 0; i < Context.Providers().Count(); i++) { auto &Provider = Context.Providers()[i].Value(); for (int j = 0; j < Provider.Applications().Count(); ++j) { - const auto &app = Provider.Applications().Members(j); - if (app["type"].AsString() == "service_account") { - if (Provider.KeyStatus() == ksUnknown) { - CreateAccessToken(Provider, app.String(), Context); + const auto &caApplication = Provider.Applications().Members(j); + if (caApplication["type"].AsString() == "service_account") { + if (Provider.KeyStatus() != ksFetching) { Provider.KeyStatusTime(Now); - Provider.KeyStatus(ksSuccess); + Provider.KeyStatus(ksFetching); + CreateAccessToken(Context, Provider, caApplication.String()); } } } @@ -388,24 +394,13 @@ namespace Apostol { } //-------------------------------------------------------------------------------------------------------------- - void CCustomModule::CheckProviders(CDateTime Now, CContext &Context) { - for (int i = 0; i < Context.Providers().Count(); i++) { - auto& Provider = Context.Providers()[i].Value(); - if (Provider.KeyStatus() != ksUnknown) { - Provider.KeyStatusTime(Now); - Provider.KeyStatus(ksUnknown); - } - } - } - //-------------------------------------------------------------------------------------------------------------- - void CCustomModule::CheckDeal(const CDeal &Deal) { const auto &Data = Deal.Data(); const auto DateTime = UTC(); const auto Date = StringToDate(Data.Date); - const auto Sum = BTCToDouble(Data.Payment.Sum); + //const auto Sum = BTCToDouble(Data.Payment.Sum); if (Data.Order == doCreate) { if (DateTime < Date) diff --git a/src/app/Common.hpp b/src/app/Common.hpp index e6bb1a1..88f0a5e 100644 --- a/src/app/Common.hpp +++ b/src/app/Common.hpp @@ -95,10 +95,9 @@ namespace Apostol { } //---------------------------------------------------------------------------------------------------------- - void FetchProviders(CDateTime Now, CContext &Context); - static void CheckProviders(CDateTime Now, CContext &Context); + void CheckProviders(CContext &Context, CDateTime Now); - void CreateAccessToken(const CProvider &Provider, const CString &Application, CContext &Context); + void CreateAccessToken(CContext &Context, CProvider &Provider, const CString &Application); void ParsePGPKey(const CString &Key, CStringPairs &ServerList, CStringList &BTCKeys); void ModuleService(CContext &Context); diff --git a/src/modules/Workers/WebService/WebService.cpp b/src/modules/Workers/WebService/WebService.cpp index 71ab453..ad0ff48 100644 --- a/src/modules/Workers/WebService/WebService.cpp +++ b/src/modules/Workers/WebService/WebService.cpp @@ -93,7 +93,6 @@ namespace Apostol { const auto &caFormat = pServerRequest->Params["payload"]; if (!caFormat.IsEmpty()) { - if (caFormat == "html") { pServerReply->ContentType = CHTTPReply::html; } else if (caFormat == "json") { @@ -111,11 +110,12 @@ namespace Apostol { } pProxyConnection->SendReply(pProxyReply->Status, nullptr, true); } else { + pServerReply->Content = pProxyReply->Content; pProxyConnection->SendStockReply(pProxyReply->Status, true); } } else { + pServerReply->Content = pProxyReply->Content; if (pProxyReply->Status == CHTTPReply::ok) { - pServerReply->Content = pProxyReply->Content; pProxyConnection->SendReply(pProxyReply->Status, nullptr, true); } else { pProxyConnection->SendStockReply(pProxyReply->Status, true); @@ -1103,8 +1103,7 @@ namespace Apostol { } if (Context.Status() >= Context::csInitialized) { - CheckProviders(Now, Context); - FetchProviders(Now, Context); + CheckProviders(Context, Now); } } diff --git a/src/modules/Workers/WebSocket/WebSocket.cpp b/src/modules/Workers/WebSocket/WebSocket.cpp index 63101e4..788b2b4 100644 --- a/src/modules/Workers/WebSocket/WebSocket.cpp +++ b/src/modules/Workers/WebSocket/WebSocket.cpp @@ -1053,8 +1053,7 @@ namespace Apostol { } if (Context.Status() >= Context::csInitialized) { - CheckProviders(Now, Context); - FetchProviders(Now, Context); + CheckProviders(Context, Now); } }