summaryrefslogtreecommitdiff
path: root/workflow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'workflow.cpp')
-rw-r--r--workflow.cpp50
1 files changed, 50 insertions, 0 deletions
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<bool, bool> WorkflowMachine::GetLogStatus()
+{
+ rapidjson::Document request(rapidjson::kObjectType);
+ rapidjson::Document::AllocatorType& allocator = request.GetAllocator();
+ request.AddMember("command", "status", allocator);
+ rapidjson::StringBuffer buffer;
+ rapidjson::Writer<rapidjson::StringBuffer> 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<rapidjson::StringBuffer> 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<bool> WorkflowMachine::QueryOverride(const string& activity)
{
rapidjson::Document request(rapidjson::kObjectType);