diff --git a/plugins/twitch/macro-condition-twitch.cpp b/plugins/twitch/macro-condition-twitch.cpp index 345527dc..5e75c825 100644 --- a/plugins/twitch/macro-condition-twitch.cpp +++ b/plugins/twitch/macro-condition-twitch.cpp @@ -257,38 +257,6 @@ void MacroConditionTwitch::ResetChatConnection() _chatConnection.reset(); } -static void -setTempVarsHelper(const std::string &jsonStr, - std::function setVar) -{ - try { - auto json = nlohmann::json::parse(jsonStr); - for (auto it = json.begin(); it != json.end(); ++it) { - if (it->is_string()) { - setVar(it.key().c_str(), - it->get().c_str()); - continue; - } - setVar(it.key().c_str(), it->dump().c_str()); - } - } catch (const nlohmann::json::exception &e) { - vblog(LOG_INFO, "%s", jsonStr.c_str()); - vblog(LOG_INFO, "%s", e.what()); - } -} - -static void -setTempVarsHelper(obs_data_t *data, - std::function setVar) -{ - auto jsonStr = obs_data_get_json(data); - if (!jsonStr) { - return; - } - - setTempVarsHelper(jsonStr, setVar); -} - bool MacroConditionTwitch::CheckChannelGenericEvents() { if (!_eventBuffer) { @@ -304,10 +272,10 @@ bool MacroConditionTwitch::CheckChannelGenericEvents() continue; } SetVariableValue(event->ToString()); - setTempVarsHelper(event->data, - [this](const char *id, const char *value) { - SetTempVarValue(id, value); - }); + SetJsonTempVars(event->data, + [this](const char *id, const char *value) { + SetTempVarValue(id, value); + }); if (_clearBufferOnMatch) { _eventBuffer->Clear(); @@ -345,10 +313,10 @@ bool MacroConditionTwitch::CheckChannelLiveEvents() } SetVariableValue(event->ToString()); - setTempVarsHelper(event->data, - [this](const char *id, const char *value) { - SetTempVarValue(id, value); - }); + SetJsonTempVars(event->data, + [this](const char *id, const char *value) { + SetTempVarValue(id, value); + }); if (_clearBufferOnMatch) { _eventBuffer->Clear(); @@ -374,14 +342,14 @@ bool MacroConditionTwitch::CheckChannelRewardRedemptionEvents() continue; } SetVariableValue(event->ToString()); - setTempVarsHelper(event->data, - [this](const char *id, const char *value) { - SetTempVarValue(id, value); - }); + SetJsonTempVars(event->data, + [this](const char *id, const char *value) { + SetTempVarValue(id, value); + }); OBSDataAutoRelease rewardInfo = obs_data_get_obj(event->data, "reward"); - setTempVarsHelper(rewardInfo, [this](const char *nestedId, - const char *value) { + SetJsonTempVars(rewardInfo, [this](const char *nestedId, + const char *value) { std::string id = "reward." + std::string(nestedId); SetTempVarValue(id, value); }); diff --git a/plugins/twitch/twitch-helpers.cpp b/plugins/twitch/twitch-helpers.cpp index 2963d429..ff9b6f11 100644 --- a/plugins/twitch/twitch-helpers.cpp +++ b/plugins/twitch/twitch-helpers.cpp @@ -2,6 +2,7 @@ #include "token.hpp" #include +#include namespace advss { @@ -330,4 +331,34 @@ RequestResult SendDeleteRequest(const TwitchToken &token, return processResult(response, __func__); } +void SetJsonTempVars(const std::string &jsonStr, + std::function setVarFunc) +{ + try { + auto json = nlohmann::json::parse(jsonStr); + for (auto it = json.begin(); it != json.end(); ++it) { + if (it->is_string()) { + setVarFunc(it.key().c_str(), + it->get().c_str()); + continue; + } + setVarFunc(it.key().c_str(), it->dump().c_str()); + } + } catch (const nlohmann::json::exception &e) { + vblog(LOG_INFO, "%s", jsonStr.c_str()); + vblog(LOG_INFO, "%s", e.what()); + } +} + +void SetJsonTempVars(obs_data_t *data, + std::function setVarFunc) +{ + auto jsonStr = obs_data_get_json(data); + if (!jsonStr) { + return; + } + + SetJsonTempVars(jsonStr, setVarFunc); +} + } // namespace advss diff --git a/plugins/twitch/twitch-helpers.hpp b/plugins/twitch/twitch-helpers.hpp index ea531a72..eda748a8 100644 --- a/plugins/twitch/twitch-helpers.hpp +++ b/plugins/twitch/twitch-helpers.hpp @@ -53,4 +53,10 @@ RequestResult SendPatchRequest(const TwitchToken &token, const std::string &uri, const httplib::Params ¶ms, const OBSData &data, bool useCache); +// Helper functions to set temp var values +void SetJsonTempVars(const std::string &jsonStr, + std::function setVarFunc); +void SetJsonTempVars(obs_data_t *data, + std::function setVarFunc); + } // namespace advss