summaryrefslogtreecommitdiff
path: root/protocols/WhatsApp/src
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-01-05 15:54:03 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-01-05 15:54:03 +0300
commit14c4e44a0a91e1ad701d4ae3c58185d25118e64e (patch)
tree50f36035466f355c74373e757bc00b6610ce6267 /protocols/WhatsApp/src
parent94667140aeb3886d22e4c1301423fe99aaf3fba4 (diff)
Netlib:
- NETLIBHTTPHEADER & NETLIBHTTPREQUEST obsoleted; - NETLIBHTTPREQUEST divided into MHttpRequest & MHttpResponse; - MHttpHeaders now manager headers both for MHttpRequest & MHttpResponse;
Diffstat (limited to 'protocols/WhatsApp/src')
-rw-r--r--protocols/WhatsApp/src/avatars.cpp10
-rw-r--r--protocols/WhatsApp/src/server.cpp9
-rw-r--r--protocols/WhatsApp/src/utils.cpp15
3 files changed, 14 insertions, 20 deletions
diff --git a/protocols/WhatsApp/src/avatars.cpp b/protocols/WhatsApp/src/avatars.cpp
index 9bb7e926aa..077414e8e0 100644
--- a/protocols/WhatsApp/src/avatars.cpp
+++ b/protocols/WhatsApp/src/avatars.cpp
@@ -130,10 +130,10 @@ void WhatsAppProto::ServerFetchAvatar(const char *jid)
bool CMPlugin::SaveFile(const char *pszUrl, PROTO_AVATAR_INFORMATION &ai)
{
- NETLIBHTTPREQUEST req = {};
+ MHttpRequest req;
req.flags = NLHRF_NODUMP | NLHRF_PERSISTENT | NLHRF_SSL | NLHRF_HTTP11 | NLHRF_REDIRECT;
req.requestType = REQUEST_GET;
- req.szUrl = (char*)pszUrl;
+ req.m_szUrl = pszUrl;
req.nlc = hAvatarConn;
NLHR_PTR pReply(Netlib_HttpTransaction(hAvatarUser, &req));
@@ -146,14 +146,14 @@ bool CMPlugin::SaveFile(const char *pszUrl, PROTO_AVATAR_INFORMATION &ai)
hAvatarConn = pReply->nlc;
bool bSuccess = false;
- if (pReply->resultCode == 200 && pReply->pData && pReply->dataLength) {
- if (auto *pszHdr = Netlib_GetHeader(pReply, "Content-Type"))
+ if (pReply->resultCode == 200 && !pReply->body.IsEmpty()) {
+ if (auto *pszHdr = pReply->FindHeader("Content-Type"))
ai.format = ProtoGetAvatarFormatByMimeType(pszHdr);
if (ai.format != PA_FORMAT_UNKNOWN) {
FILE *fout = _wfopen(ai.filename, L"wb");
if (fout) {
- fwrite(pReply->pData, 1, pReply->dataLength, fout);
+ fwrite(pReply->body, 1, pReply->body.GetLength(), fout);
fclose(fout);
bSuccess = true;
}
diff --git a/protocols/WhatsApp/src/server.cpp b/protocols/WhatsApp/src/server.cpp
index 857666b2e4..e653ac95ba 100644
--- a/protocols/WhatsApp/src/server.cpp
+++ b/protocols/WhatsApp/src/server.cpp
@@ -24,13 +24,10 @@ void WhatsAppProto::ServerThread(void *)
void WhatsAppProto::ServerThreadWorker()
{
// connect websocket
- NETLIBHTTPHEADER hdrs[] =
- {
- { "Origin", "https://web.whatsapp.com" },
- { 0, 0 }
- };
+ MHttpHeaders hdrs;
+ hdrs.AddHeader("Origin", "https://web.whatsapp.com");
- NLHR_PTR pReply(WebSocket_Connect(m_hNetlibUser, "web.whatsapp.com/ws/chat", hdrs));
+ NLHR_PTR pReply(WebSocket_Connect(m_hNetlibUser, "web.whatsapp.com/ws/chat", &hdrs));
if (pReply == nullptr) {
debugLogA("Server connection failed, exiting");
return;
diff --git a/protocols/WhatsApp/src/utils.cpp b/protocols/WhatsApp/src/utils.cpp
index 3d3650c043..8e9a19b936 100644
--- a/protocols/WhatsApp/src/utils.cpp
+++ b/protocols/WhatsApp/src/utils.cpp
@@ -260,7 +260,7 @@ MBinBuffer decodeBufStr(const std::string &buf)
uint32_t decodeBigEndian(const uint8_t *buf, size_t len)
{
uint32_t ret = 0;
- for (int i = 0; i < len; i++) {
+ for (size_t i = 0; i < len; i++) {
ret <<= 8;
ret += buf[i];
}
@@ -271,7 +271,7 @@ uint32_t decodeBigEndian(const uint8_t *buf, size_t len)
std::string encodeBigEndian(uint32_t num, size_t len)
{
std::string res;
- for (int i = 0; i < len; i++) {
+ for (size_t i = 0; i < len; i++) {
char c = num & 0xFF;
res = c + res;
num >>= 8;
@@ -519,20 +519,17 @@ WAMediaKeys::WAMediaKeys(const uint8_t *pKey, size_t keyLen, const char *pszMedi
MBinBuffer WhatsAppProto::DownloadEncryptedFile(const char *url, const ProtobufCBinaryData &mediaKeys, const char *pszMediaType)
{
- NETLIBHTTPHEADER headers[1] = {{"Origin", "https://web.whatsapp.com"}};
-
- NETLIBHTTPREQUEST req = {};
+ MHttpRequest req;
req.requestType = REQUEST_GET;
- req.szUrl = (char*)url;
- req.headersCount = _countof(headers);
- req.headers = headers;
+ req.m_szUrl = url;
+ req.AddHeader("Origin", "https://web.whatsapp.com");
MBinBuffer ret;
auto *pResp = Netlib_HttpTransaction(m_hNetlibUser, &req);
if (pResp) {
if (pResp->resultCode == 200) {
WAMediaKeys out(mediaKeys.data, mediaKeys.len, pszMediaType);
- ret = aesDecrypt(EVP_aes_256_cbc(), out.cipherKey, out.iv, pResp->pData, pResp->dataLength);
+ ret = aesDecrypt(EVP_aes_256_cbc(), out.cipherKey, out.iv, pResp->body, pResp->body.GetLength());
}
}