From 8751c0d2968cc79f23c9e56317207929d0b99de5 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sun, 15 Jan 2023 04:29:58 +0100 Subject: [PATCH] Enable getting variable values from http action --- src/macro-core/macro-action-http.cpp | 18 ++++++++++++++---- src/macro-core/macro-action-http.hpp | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/macro-core/macro-action-http.cpp b/src/macro-core/macro-action-http.cpp index c59689c6..8cfc48a1 100644 --- a/src/macro-core/macro-action-http.cpp +++ b/src/macro-core/macro-action-http.cpp @@ -16,9 +16,14 @@ const static std::map methods = { "AdvSceneSwitcher.action.http.type.post"}, }; -size_t WriteCB(void *, size_t size, size_t nmemb, std::string *) +size_t DropCB(void *, size_t size, size_t nmemb, std::string *) { - // Just drop the data + return size * nmemb; +} + +size_t WriteCB(void *ptr, size_t size, size_t nmemb, std::string *buffer) +{ + buffer->append((char *)ptr, nmemb); return size * nmemb; } @@ -29,10 +34,15 @@ void MacroActionHttp::Get() switcher->curl.SetOpt(CURLOPT_TIMEOUT_MS, _timeout.seconds * 1000); std::string response; - switcher->curl.SetOpt(CURLOPT_WRITEFUNCTION, WriteCB); + if (IsReferencedInVars()) { + switcher->curl.SetOpt(CURLOPT_WRITEFUNCTION, WriteCB); + } else { + switcher->curl.SetOpt(CURLOPT_WRITEFUNCTION, DropCB); + } switcher->curl.SetOpt(CURLOPT_WRITEDATA, &response); - switcher->curl.Perform(); + + SetVariableValue(response); } void MacroActionHttp::Post() diff --git a/src/macro-core/macro-action-http.hpp b/src/macro-core/macro-action-http.hpp index 1aef77d8..58390ba3 100644 --- a/src/macro-core/macro-action-http.hpp +++ b/src/macro-core/macro-action-http.hpp @@ -8,7 +8,7 @@ class MacroActionHttp : public MacroAction { public: - MacroActionHttp(Macro *m) : MacroAction(m) {} + MacroActionHttp(Macro *m) : MacroAction(m, true) {} bool PerformAction(); void LogAction() const; bool Save(obs_data_t *obj) const;