From 44c8af1986d2626e44931917c548adece5bc074d Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Sat, 29 Mar 2025 21:55:04 -0400 Subject: Add interim workflow C++ apis for logging. --- workflow.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'workflow.cpp') diff --git a/workflow.cpp b/workflow.cpp index 9edb6ea6..8e3dc7df 100644 --- a/workflow.cpp +++ b/workflow.cpp @@ -207,6 +207,56 @@ string WorkflowMachine::GetState() } +std::pair WorkflowMachine::GetLogStatus() +{ + rapidjson::Document request(rapidjson::kObjectType); + rapidjson::Document::AllocatorType& allocator = request.GetAllocator(); + request.AddMember("command", "status", allocator); + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + request.Accept(writer); + + string jsonResult; + if (m_function) + jsonResult = BNPostWorkflowRequestForFunction(m_function->GetObject(), buffer.GetString()); + else + jsonResult = BNPostWorkflowRequestForBinaryView(m_view->GetObject(), buffer.GetString()); + + rapidjson::Document response(rapidjson::kObjectType); + response.Parse(jsonResult.c_str()); + if (response.HasMember("logStatus") && response["logStatus"].HasMember("local") && response["logStatus"].HasMember("global")) + return {response["logStatus"]["local"].GetBool(), response["logStatus"]["global"].GetBool()}; + + return {false, false}; +} + + +bool WorkflowMachine::SetLogEnabled(bool enable, bool global) +{ + rapidjson::Document request(rapidjson::kObjectType); + rapidjson::Document::AllocatorType& allocator = request.GetAllocator(); + request.AddMember("command", "log", allocator); + request.AddMember("enable", enable, allocator); + request.AddMember("global", global, allocator); + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + request.Accept(writer); + + string jsonResult; + if (m_function) + jsonResult = BNPostWorkflowRequestForFunction(m_function->GetObject(), buffer.GetString()); + else + jsonResult = BNPostWorkflowRequestForBinaryView(m_view->GetObject(), buffer.GetString()); + + rapidjson::Document response(rapidjson::kObjectType); + response.Parse(jsonResult.c_str()); + if (response.HasMember("commandStatus") && response["commandStatus"].HasMember("accepted")) + return response["commandStatus"]["accepted"].GetBool(); + + return false; +} + + std::optional WorkflowMachine::QueryOverride(const string& activity) { rapidjson::Document request(rapidjson::kObjectType); -- cgit v1.3.1