summaryrefslogtreecommitdiff
path: root/protocols/WhatsAppWeb/src/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/WhatsAppWeb/src/utils.cpp')
-rw-r--r--protocols/WhatsAppWeb/src/utils.cpp99
1 files changed, 9 insertions, 90 deletions
diff --git a/protocols/WhatsAppWeb/src/utils.cpp b/protocols/WhatsAppWeb/src/utils.cpp
index ad4e2d1e7e..79e5c0217a 100644
--- a/protocols/WhatsAppWeb/src/utils.cpp
+++ b/protocols/WhatsAppWeb/src/utils.cpp
@@ -39,7 +39,8 @@ WAUser* WhatsAppProto::AddUser(const char *szId, bool bTemporary)
WA_PKT_HANDLER WhatsAppProto::FindPersistentHandler(const WANode &pNode)
{
- CMStringA szTitle = (pNode.children.size() > 0) ? pNode.children.front()->title : "";
+ auto *pChild = pNode.getFirstChild();
+ CMStringA szTitle = (pChild) ? pChild->title : "";
CMStringA szType = pNode.title;
CMStringA szXmlns = pNode.getAttr("xmlns");
@@ -58,15 +59,15 @@ WA_PKT_HANDLER WhatsAppProto::FindPersistentHandler(const WANode &pNode)
/////////////////////////////////////////////////////////////////////////////////////////
-bool WhatsAppProto::getBlob(const char *szSetting, MBinBuffer &buf)
+MBinBuffer WhatsAppProto::getBlob(const char *szSetting)
{
+ MBinBuffer buf;
DBVARIANT dbv = { DBVT_BLOB };
- if (db_get(0, m_szModuleName, szSetting, &dbv))
- return false;
-
- buf.assign(dbv.pbVal, dbv.cpbVal);
- db_free(&dbv);
- return true;
+ if (!db_get(0, m_szModuleName, szSetting, &dbv)) {
+ buf.assign(dbv.pbVal, dbv.cpbVal);
+ db_free(&dbv);
+ }
+ return buf;
}
/////////////////////////////////////////////////////////////////////////////////////////
@@ -116,88 +117,6 @@ int WhatsAppProto::WSSendNode(WANode &node, WA_PKT_HANDLER pHandler)
}
/////////////////////////////////////////////////////////////////////////////////////////
-// WANode members
-
-WANode::WANode()
-{}
-
-WANode::WANode(const char *pszTitle) :
- title(pszTitle)
-{}
-
-WANode::~WANode()
-{
- for (auto &p: attrs)
- delete p;
-
- for (auto &p: children)
- delete p;
-}
-
-const char* WANode::getAttr(const char *pszName) const
-{
- for (auto &p: attrs)
- if (p->name == pszName)
- return p->value.c_str();
-
- return nullptr;
-}
-
-void WANode::addAttr(const char *pszName, const char *pszValue)
-{
- attrs.push_back(new Attr(pszName, pszValue));
-}
-
-CMStringA WANode::getBody() const
-{
- return CMStringA((char *)content.data(), (int)content.length());
-}
-
-WANode* WANode::getChild(const char *pszName) const
-{
- for (auto &it : children)
- if (it->title == pszName)
- return it;
-
- return nullptr;
-}
-
-void WANode::print(CMStringA &dest, int level) const
-{
- for (int i = 0; i < level; i++)
- dest.Append(" ");
-
- dest.AppendFormat("<%s ", title.c_str());
- for (auto &p: attrs)
- dest.AppendFormat("%s=\"%s\" ", p->name.c_str(), p->value.c_str());
- dest.Truncate(dest.GetLength() - 1);
-
- if (content.isEmpty() && children.empty()) {
- dest.Append("/>\n");
- return;
- }
-
- dest.Append(">");
- if (!content.isEmpty()) {
- ptrA tmp((char *)mir_alloc(content.length() * 2 + 1));
- bin2hex(content.data(), content.length(), tmp);
- dest.AppendFormat("%s", tmp.get());
- }
-
- if (!children.empty()) {
- dest.Append("\n");
-
- for (auto &p : children)
- p->print(dest, level + 1);
-
- for (int i = 0; i < level; i++)
- dest.Append(" ");
- }
-
- dest.AppendFormat("</%s>\n", title.c_str());
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
std::string encodeBigEndian(uint32_t num, size_t len)
{