From 14c4e44a0a91e1ad701d4ae3c58185d25118e64e Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 5 Jan 2024 15:54:03 +0300 Subject: Netlib: - NETLIBHTTPHEADER & NETLIBHTTPREQUEST obsoleted; - NETLIBHTTPREQUEST divided into MHttpRequest & MHttpResponse; - MHttpHeaders now manager headers both for MHttpRequest & MHttpResponse; --- protocols/VKontakte/src/misc.cpp | 27 +++++++------- protocols/VKontakte/src/vk_avatars.cpp | 6 ++-- protocols/VKontakte/src/vk_captcha.cpp | 8 ++--- protocols/VKontakte/src/vk_chats.cpp | 10 +++--- protocols/VKontakte/src/vk_feed.cpp | 4 +-- protocols/VKontakte/src/vk_files.cpp | 12 +++---- protocols/VKontakte/src/vk_history.cpp | 2 +- protocols/VKontakte/src/vk_messages.cpp | 6 ++-- protocols/VKontakte/src/vk_pollserver.cpp | 8 ++--- protocols/VKontakte/src/vk_proto.cpp | 2 +- protocols/VKontakte/src/vk_proto.h | 60 +++++++++++++++---------------- protocols/VKontakte/src/vk_queue.cpp | 10 ++---- protocols/VKontakte/src/vk_search.cpp | 4 +-- protocols/VKontakte/src/vk_status.cpp | 4 +-- protocols/VKontakte/src/vk_struct.cpp | 4 +-- protocols/VKontakte/src/vk_struct.h | 2 +- protocols/VKontakte/src/vk_thread.cpp | 26 +++++++------- 17 files changed, 95 insertions(+), 100 deletions(-) (limited to 'protocols/VKontakte/src') diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index 4378651b6f..01e6046a43 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -315,14 +315,14 @@ bool CVkProto::IsGroupUser(MCONTACT hContact) ///////////////////////////////////////////////////////////////////////////////////////// -JSONNode& CVkProto::CheckJsonResponse(AsyncHttpRequest *pReq, NETLIBHTTPREQUEST *reply, JSONNode &root) +JSONNode& CVkProto::CheckJsonResponse(AsyncHttpRequest *pReq, MHttpResponse *reply, JSONNode &root) { debugLogA("CVkProto::CheckJsonResponse"); - if (!reply || !reply->pData) + if (!reply || reply->body.IsEmpty()) return nullNode; - root = JSONNode::parse(reply->pData); + root = JSONNode::parse(reply->body); if (!CheckJsonResult(pReq, root)) return nullNode; @@ -442,7 +442,7 @@ bool CVkProto::CheckJsonResult(AsyncHttpRequest *pReq, const JSONNode &jnNode) return (iErrorCode == 0); } -void CVkProto::OnReceiveSmth(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveSmth(MHttpResponse *reply, AsyncHttpRequest *pReq) { JSONNode jnRoot; const JSONNode &jnResponse = CheckJsonResponse(pReq, reply, jnRoot); @@ -575,14 +575,15 @@ CMStringW CVkProto::RunRenameNick(LPCWSTR pwszOldName) ///////////////////////////////////////////////////////////////////////////////////////// -void CVkProto::GrabCookies(NETLIBHTTPREQUEST *nhr, CMStringA szDefDomain) +void CVkProto::GrabCookies(MHttpResponse *nhr, CMStringA szDefDomain) { debugLogA("CVkProto::GrabCookies"); - for (int i = 0; i < nhr->headersCount; i++) { - if (_stricmp(nhr->headers[i].szName, "Set-cookie")) + + for (auto &hdr : *nhr) { + if (_stricmp(hdr->szName, "Set-cookie")) continue; - CMStringA szValue = nhr->headers[i].szValue, szCookieName, szCookieVal, szDomain; + CMStringA szValue = hdr->szValue, szCookieName, szCookieVal, szDomain; int iStart = 0; while (true) { bool bFirstToken = (iStart == 0); @@ -1468,16 +1469,16 @@ CMStringW CVkProto::GetAttachmentDescr(const JSONNode &jnAttachments, BBCSupport if (GetFileAttributesW(wszFileName) == INVALID_FILE_ATTRIBUTES) { T2Utf szUrl(wszUrl); - NETLIBHTTPREQUEST req = {}; + MHttpRequest req; req.flags = NLHRF_NODUMP | NLHRF_SSL | NLHRF_HTTP11 | NLHRF_REDIRECT; req.requestType = REQUEST_GET; - req.szUrl = szUrl; + req.m_szUrl = szUrl.get(); - NETLIBHTTPREQUEST* pReply = Netlib_HttpTransaction(m_hNetlibUser, &req); - if (pReply != nullptr && pReply->resultCode == 200 && pReply->pData && pReply->dataLength) { + MHttpResponse *pReply = Netlib_HttpTransaction(m_hNetlibUser, &req); + if (pReply != nullptr && pReply->resultCode == 200 && !pReply->body.IsEmpty()) { bSuccess = true; FILE* out = _wfopen(wszFileName, L"wb"); - fwrite(pReply->pData, 1, pReply->dataLength, out); + fwrite(pReply->body, 1, pReply->body.GetLength(), out); fclose(out); } } diff --git a/protocols/VKontakte/src/vk_avatars.cpp b/protocols/VKontakte/src/vk_avatars.cpp index 29288a2a3a..53c33f8250 100644 --- a/protocols/VKontakte/src/vk_avatars.cpp +++ b/protocols/VKontakte/src/vk_avatars.cpp @@ -17,7 +17,7 @@ along with this program. If not, see . #include "stdafx.h" -void CVkProto::OnReceiveAvatar(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveAvatar(MHttpResponse *reply, AsyncHttpRequest *pReq) { if (reply->resultCode != 200 || !pReq->pUserInfo) return; @@ -25,7 +25,7 @@ void CVkProto::OnReceiveAvatar(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) PROTO_AVATAR_INFORMATION ai = { 0 }; CVkSendMsgParam *param = (CVkSendMsgParam *)pReq->pUserInfo; GetAvatarFileName(param->hContact, ai.filename, _countof(ai.filename)); - ai.format = ProtoGetBufferFormat(reply->pData); + ai.format = ProtoGetBufferFormat(reply->body); FILE *out = _wfopen(ai.filename, L"wb"); if (out == nullptr) { @@ -35,7 +35,7 @@ void CVkProto::OnReceiveAvatar(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) return; } - fwrite(reply->pData, 1, reply->dataLength, out); + fwrite(reply->body, 1, reply->body.GetLength(), out); fclose(out); setByte(param->hContact, "NeedNewAvatar", 0); ProtoBroadcastAck(param->hContact, ACKTYPE_AVATAR, ACKRESULT_SUCCESS, &ai); diff --git a/protocols/VKontakte/src/vk_captcha.cpp b/protocols/VKontakte/src/vk_captcha.cpp index e82d1a3400..06e1d451e0 100644 --- a/protocols/VKontakte/src/vk_captcha.cpp +++ b/protocols/VKontakte/src/vk_captcha.cpp @@ -33,12 +33,12 @@ bool CVkProto::RunCaptchaForm(LPCSTR szUrl, CMStringA &result) Utils_OpenUrl(szCaptchaAssistant); } else { - NETLIBHTTPREQUEST req = { sizeof(req) }; + MHttpRequest req; req.requestType = REQUEST_GET; - req.szUrl = (LPSTR)szUrl; + req.m_szUrl = (LPSTR)szUrl; req.flags = VK_NODUMPHEADERS; - NETLIBHTTPREQUEST *reply = Netlib_HttpTransaction(m_hNetlibUser, &req); + auto *reply = Netlib_HttpTransaction(m_hNetlibUser, &req); if (reply == nullptr) return false; @@ -47,7 +47,7 @@ bool CVkProto::RunCaptchaForm(LPCSTR szUrl, CMStringA &result) return false; } - param.bmp = Image_LoadFromMem(reply->pData, reply->dataLength, FIF_UNKNOWN); + param.bmp = Image_LoadFromMem(reply->body, reply->body.GetLength(), FIF_UNKNOWN); BITMAP bmp = { 0 }; GetObject(param.bmp, sizeof(bmp), &bmp); diff --git a/protocols/VKontakte/src/vk_chats.cpp b/protocols/VKontakte/src/vk_chats.cpp index 1fa6d8b774..0264ffad89 100644 --- a/protocols/VKontakte/src/vk_chats.cpp +++ b/protocols/VKontakte/src/vk_chats.cpp @@ -195,7 +195,7 @@ void CVkProto::RetrieveChatInfo(CVkChatInfo *cc) )->pUserInfo = cc; } -void CVkProto::OnReceiveChatInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveChatInfo(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveChatInfo %d", reply->resultCode); if (reply->resultCode != 200) @@ -644,7 +644,7 @@ int CVkProto::OnChatEvent(WPARAM, LPARAM lParam) return 1; } -void CVkProto::OnSendChatMsg(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnSendChatMsg(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnSendChatMsg %d", reply->resultCode); int iResult = ACKRESULT_FAILED; @@ -784,7 +784,7 @@ void CVkProto::KickFromChat(VKUserID_t iChatId, VKUserID_t iUserId, const JSONNo LeaveChat(iChatId); } -void CVkProto::OnChatLeave(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnChatLeave(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnChatLeave %d", reply->resultCode); if (reply->resultCode != 200) @@ -795,7 +795,7 @@ void CVkProto::OnChatLeave(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) } -void CVkProto::OnChatDestroy(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnChatDestroy(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnChatDestroy %d", reply->resultCode); if (reply->resultCode != 200) @@ -1031,7 +1031,7 @@ void CVkProto::CreateNewChat(LPCSTR uids, LPCWSTR pwszTitle) << CHAR_PARAM("user_ids", uids)); } -void CVkProto::OnCreateNewChat(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnCreateNewChat(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnCreateNewChat %d", reply->resultCode); if (reply->resultCode != 200) diff --git a/protocols/VKontakte/src/vk_feed.cpp b/protocols/VKontakte/src/vk_feed.cpp index c5e6701ef1..53f5755057 100644 --- a/protocols/VKontakte/src/vk_feed.cpp +++ b/protocols/VKontakte/src/vk_feed.cpp @@ -642,7 +642,7 @@ static int sttCompareVKNotificationItems(const CVKNewsItem *p1, const CVKNewsIte return compareType ? compareDate : (compareId ? (int)compareDate : 0); } -void CVkProto::OnReceiveUnreadNews(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveUnreadNews(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveUnreadNews %d", reply->resultCode); db_unset(0, m_szModuleName, "LastNewsReqTime"); @@ -747,7 +747,7 @@ void CVkProto::NotificationMarkAsViewed() Push(new AsyncHttpRequest(this, REQUEST_GET, "/method/notifications.markAsViewed.json", true, &CVkProto::OnReceiveSmth)); } -void CVkProto::OnReceiveUnreadNotifications(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveUnreadNotifications(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveUnreadNotifications %d", reply->resultCode); db_unset(0, m_szModuleName, "LastNotificationsReqTime"); diff --git a/protocols/VKontakte/src/vk_files.cpp b/protocols/VKontakte/src/vk_files.cpp index 5c83372d51..34bdfd5504 100644 --- a/protocols/VKontakte/src/vk_files.cpp +++ b/protocols/VKontakte/src/vk_files.cpp @@ -127,7 +127,7 @@ void CVkProto::SendFileFiled(CVkFileUploadParam *fup, int ErrorCode) } -void CVkProto::OnReciveUploadServer(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReciveUploadServer(MHttpResponse *reply, AsyncHttpRequest *pReq) { CVkFileUploadParam *fup = (CVkFileUploadParam *)pReq->pUserInfo; if (!IsOnline()) { @@ -201,9 +201,9 @@ void CVkProto::OnReciveUploadServer(NETLIBHTTPREQUEST *reply, AsyncHttpRequest * // Body size long dataLength = iFileLen + DataBegin.GetLength() + DataEnd.GetLength(); // Body { - char *pData = (char *)mir_alloc(dataLength); + pUploadReq->m_szParam.Truncate(dataLength); + char *pData = pUploadReq->m_szParam.GetBuffer(); memcpy(pData, (void *)DataBegin.GetBuffer(), DataBegin.GetLength()); - pUploadReq->pData = pData; pData += DataBegin.GetLength(); long lBytes = (long)fread(pData, 1, iFileLen, pFile); @@ -211,7 +211,6 @@ void CVkProto::OnReciveUploadServer(NETLIBHTTPREQUEST *reply, AsyncHttpRequest * if (lBytes != iFileLen) { SendFileFiled(fup, VKERR_ERR_READ_FILE); - mir_free(pUploadReq->pData); delete pUploadReq; return; } @@ -220,12 +219,11 @@ void CVkProto::OnReciveUploadServer(NETLIBHTTPREQUEST *reply, AsyncHttpRequest * memcpy(pData, (void *)DataEnd.GetBuffer(), DataEnd.GetLength()); // } Body - pUploadReq->dataLength = (int)dataLength; pUploadReq->pUserInfo = pReq->pUserInfo; Push(pUploadReq); } -void CVkProto::OnReciveUpload(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReciveUpload(MHttpResponse *reply, AsyncHttpRequest *pReq) { CVkFileUploadParam *fup = (CVkFileUploadParam *)pReq->pUserInfo; if (!IsOnline()) { @@ -303,7 +301,7 @@ void CVkProto::OnReciveUpload(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) Push(pUploadReq); } -void CVkProto::OnReciveUploadFile(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReciveUploadFile(MHttpResponse *reply, AsyncHttpRequest *pReq) { CVkFileUploadParam *fup = (CVkFileUploadParam *)pReq->pUserInfo; if (!IsOnline()) { diff --git a/protocols/VKontakte/src/vk_history.cpp b/protocols/VKontakte/src/vk_history.cpp index 4e967f319e..64ea57b002 100644 --- a/protocols/VKontakte/src/vk_history.cpp +++ b/protocols/VKontakte/src/vk_history.cpp @@ -166,7 +166,7 @@ void CVkProto::GetHistoryDlg(MCONTACT hContact, VKMessageID_t iLastMsg) } } -void CVkProto::OnReceiveHistoryMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveHistoryMessages(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveHistoryMessages %d", reply->resultCode); if (reply->resultCode != 200 || !pReq->pUserInfo) { diff --git a/protocols/VKontakte/src/vk_messages.cpp b/protocols/VKontakte/src/vk_messages.cpp index 3549a77a8b..3030df3b9f 100644 --- a/protocols/VKontakte/src/vk_messages.cpp +++ b/protocols/VKontakte/src/vk_messages.cpp @@ -186,7 +186,7 @@ int CVkProto::SendMsg(MCONTACT hContact, MEVENT hReplyEvent, const char *szMsg) return uMsgId; } -void CVkProto::OnSendMessage(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnSendMessage(MHttpResponse *reply, AsyncHttpRequest *pReq) { int iResult = ACKRESULT_FAILED; if (pReq->pUserInfo == nullptr) { @@ -299,7 +299,7 @@ void CVkProto::RetrieveUnreadMessages() Push(new AsyncHttpRequest(this, REQUEST_GET, "/method/execute.RetrieveUnreadConversations", true, &CVkProto::OnReceiveDlgs, AsyncHttpRequest::rpHigh)); } -void CVkProto::OnReceiveMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveMessages(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveMessages %d", reply->resultCode); if (reply->resultCode != 200) @@ -487,7 +487,7 @@ void CVkProto::OnReceiveMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe } } -void CVkProto::OnReceiveDlgs(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveDlgs(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveDlgs %d", reply->resultCode); if (reply->resultCode != 200) diff --git a/protocols/VKontakte/src/vk_pollserver.cpp b/protocols/VKontakte/src/vk_pollserver.cpp index 1597b439ca..3030816b1c 100644 --- a/protocols/VKontakte/src/vk_pollserver.cpp +++ b/protocols/VKontakte/src/vk_pollserver.cpp @@ -28,7 +28,7 @@ void CVkProto::RetrievePollingInfo() ); } -void CVkProto::OnReceivePollingInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceivePollingInfo(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceivePollingInfo %d", reply->resultCode); if (reply->resultCode != 200) @@ -253,9 +253,9 @@ int CVkProto::PollServer() CMStringA szReqUrl(FORMAT, "https://%s?act=a_check&key=%s&ts=%s&wait=25&access_token=%s&mode=%d&version=%d", m_szPollingServer, m_szPollingKey, m_szPollingTs, m_szAccessToken, 106, 2); // see mode parametr description on https://vk.com/dev/using_longpoll (Russian version) - NETLIBHTTPREQUEST req = {}; + MHttpRequest req; req.requestType = REQUEST_GET; - req.szUrl = szReqUrl.GetBuffer(); + req.m_szUrl = szReqUrl.GetBuffer(); req.flags = VK_NODUMPHEADERS | NLHRF_PERSISTENT | NLHRF_HTTP11 | NLHRF_SSL; req.timeout = 30000; req.nlc = m_hPollingConn; @@ -290,7 +290,7 @@ int CVkProto::PollServer() int retVal = 0; if (reply->resultCode == 200) { - JSONNode jnRoot = JSONNode::parse(reply->pData); + JSONNode jnRoot = JSONNode::parse(reply->body); const JSONNode &jnFailed = jnRoot["failed"]; if (jnFailed && jnFailed.as_int() > 1) { RetrievePollingInfo(); diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp index 372e8690a8..285ee996ae 100644 --- a/protocols/VKontakte/src/vk_proto.cpp +++ b/protocols/VKontakte/src/vk_proto.cpp @@ -651,7 +651,7 @@ int CVkProto::AuthRequest(MCONTACT hContact, const wchar_t *message) return 0; } -void CVkProto::OnReceiveAuthRequest(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveAuthRequest(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveAuthRequest %d", reply->resultCode); CVkSendMsgParam *param = (CVkSendMsgParam*)pReq->pUserInfo; diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index bc07b1dbc2..4d19cb7d29 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -82,8 +82,8 @@ struct CVkProto : public PROTO //==== Events ======================================================================== int __cdecl OnOptionsInit(WPARAM, LPARAM); - void OnOAuthAuthorize(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnReceiveAvatar(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnOAuthAuthorize(MHttpResponse*, AsyncHttpRequest*); + void OnReceiveAvatar(MHttpResponse*, AsyncHttpRequest*); //==== Services ====================================================================== @@ -284,15 +284,15 @@ private: //==== Search ======================================================================== void FreeProtoShearchStruct(PROTOSEARCHBYNAME *pParam); - void OnSearch(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnSearchByMail(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnSearch(MHttpResponse*, AsyncHttpRequest*); + void OnSearchByMail(MHttpResponse*, AsyncHttpRequest*); //==== Files Upload ================================================================== void SendFileFiled(CVkFileUploadParam *fup, int ErrorCode); - void OnReciveUploadServer(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnReciveUpload(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnReciveUploadFile(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReciveUploadServer(MHttpResponse*, AsyncHttpRequest*); + void OnReciveUpload(MHttpResponse*, AsyncHttpRequest*); + void OnReciveUploadFile(MHttpResponse*, AsyncHttpRequest*); //==== Feed ========================================================================== @@ -308,11 +308,11 @@ private: CMStringW GetVkFeedback(const JSONNode &jnFeedback, VKObjType vkFeedbackType, OBJLIST &vkUsers, CVkUserInfo *vkUser); CVKNewsItem* GetVkParent(const JSONNode &jnParent, VKObjType vkParentType, LPCWSTR pwszReplyText = nullptr, LPCWSTR pwszReplyLink = nullptr); void RetrieveUnreadNews(time_t tLastNewsTime); - void OnReceiveUnreadNews(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveUnreadNews(MHttpResponse*, AsyncHttpRequest*); void RetrieveUnreadNotifications(time_t tLastNotificationsTime); bool FilterNotification(CVKNewsItem *vkNotificationItem, bool& bIsCommented); void NotificationMarkAsViewed(); - void OnReceiveUnreadNotifications(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveUnreadNotifications(MHttpResponse*, AsyncHttpRequest*); void RetrieveUnreadEvents(); void NewsClearHistory(); INT_PTR __cdecl SvcLoadVKNews(WPARAM, LPARAM); @@ -323,50 +323,50 @@ private: void RetrieveUsersInfo(bool bFlag = false, bool bRepeat = false); void RetrieveStatusMsg(const CMStringW &StatusMsg); void RetrieveStatusMusic(const CMStringW &StatusMsg); - void OnReceiveStatus(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnReceiveStatusMsg(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveStatus(MHttpResponse*, AsyncHttpRequest*); + void OnReceiveStatusMsg(MHttpResponse*, AsyncHttpRequest*); MCONTACT SetContactInfo(const JSONNode &jnItem, bool bFlag = false, VKContactType vkContactType = VKContactType::vkContactNormal); void TrackVisitor(); void RetrieveMyInfo(void); - void OnReceiveMyInfo(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveMyInfo(MHttpResponse*, AsyncHttpRequest*); void RetrieveUserInfo(VKUserID_t iUserId); void RetrieveGroupInfo(VKUserID_t iGroupID); void RetrieveGroupInfo(CMStringA & groupIDs); - void OnReceiveUserInfo(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnReceiveGroupInfo(NETLIBHTTPREQUEST * reply, AsyncHttpRequest * pReq); + void OnReceiveUserInfo(MHttpResponse*, AsyncHttpRequest*); + void OnReceiveGroupInfo(MHttpResponse * reply, AsyncHttpRequest * pReq); void RetrieveFriends(bool bCleanNonFriendContacts = false); - void OnReceiveFriends(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveFriends(MHttpResponse*, AsyncHttpRequest*); void MarkMessagesRead(const MCONTACT hContact); void RetrieveMessagesByIds(const CMStringA &szMids); void RetrieveUnreadMessages(); - void OnReceiveMessages(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnReceiveDlgs(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnSendMessage(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveMessages(MHttpResponse*, AsyncHttpRequest*); + void OnReceiveDlgs(MHttpResponse*, AsyncHttpRequest*); + void OnSendMessage(MHttpResponse*, AsyncHttpRequest*); void WallPost(MCONTACT hContact, wchar_t *pwszMsg, wchar_t *pwszUrl, bool bFriendsOnly); void GetServerHistoryLastNDay(MCONTACT hContact, int iNDay); void GetServerHistory(MCONTACT hContact, int iOffset, int iCount, time_t tTime, VKMessageID_t iLastMsgId, bool bOnce = false); - void OnReceiveHistoryMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq); + void OnReceiveHistoryMessages(MHttpResponse *reply, AsyncHttpRequest *pReq); void GetHistoryDlg(MCONTACT hContact, VKMessageID_t iLastMsg); void RetrievePollingInfo(); - void OnReceivePollingInfo(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceivePollingInfo(MHttpResponse*, AsyncHttpRequest*); void __cdecl PollingThread(void*); int PollServer(); void PollUpdates(const JSONNode&); - void OnReceiveAuthRequest(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnReceiveDeleteFriend(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveAuthRequest(MHttpResponse*, AsyncHttpRequest*); + void OnReceiveDeleteFriend(MHttpResponse*, AsyncHttpRequest*); //==== Misc ========================================================================== void SetAllContactStatuses(int iStatus); MCONTACT FindUser(VKUserID_t iUserId, bool bCreate = false); MCONTACT FindChat(VKUserID_t iUserId); - JSONNode& CheckJsonResponse(AsyncHttpRequest *pReq, NETLIBHTTPREQUEST *reply, JSONNode &root); + JSONNode& CheckJsonResponse(AsyncHttpRequest *pReq, MHttpResponse *reply, JSONNode &root); bool CheckJsonResult(AsyncHttpRequest *pReq, const JSONNode &Node); - void OnReceiveSmth(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveSmth(MHttpResponse*, AsyncHttpRequest*); bool AutoFillForm(char*, CMStringA&, CMStringA&); CMStringW RunConfirmationCode(LPCWSTR pwszTitle); CMStringW RunRenameNick(LPCWSTR pwszOldName); - void GrabCookies(NETLIBHTTPREQUEST *nhr, CMStringA szDefDomain = ""); + void GrabCookies(MHttpResponse *nhr, CMStringA szDefDomain = ""); void ApplyCookies(AsyncHttpRequest*); bool IsAuthContactLater(MCONTACT hContact); bool AddAuthContactLater(MCONTACT hContact); @@ -417,16 +417,16 @@ private: void StopChatContactTyping(VKUserID_t iChatId, VKUserID_t iUserId); - void OnCreateNewChat(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnCreateNewChat(MHttpResponse*, AsyncHttpRequest*); CVkChatInfo* AppendConversationChat(VKUserID_t iChatId, const JSONNode& jnItem); void SetChatTitle(CVkChatInfo *cc, LPCWSTR wszTopic); void AppendChatConversationMessage(VKUserID_t iChatId, const JSONNode& jnMsg, const JSONNode& jnFUsers, bool bIsHistory); void AppendChatMessage(CVkChatInfo* vkChatInfo, VKMessageID_t iMessageId, VKUserID_t iUserId, time_t tMsgTime, LPCWSTR pwszBody, bool bIsHistory, bool bIsAction = false); void RetrieveChatInfo(CVkChatInfo*); - void OnReceiveChatInfo(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnSendChatMsg(NETLIBHTTPREQUEST*, AsyncHttpRequest*); - void OnChatLeave(NETLIBHTTPREQUEST*, AsyncHttpRequest *); - void OnChatDestroy(NETLIBHTTPREQUEST*, AsyncHttpRequest*); + void OnReceiveChatInfo(MHttpResponse*, AsyncHttpRequest*); + void OnSendChatMsg(MHttpResponse*, AsyncHttpRequest*); + void OnChatLeave(MHttpResponse*, AsyncHttpRequest *); + void OnChatDestroy(MHttpResponse*, AsyncHttpRequest*); int __cdecl OnChatEvent(WPARAM, LPARAM); int __cdecl OnGcMenuHook(WPARAM, LPARAM); void KickFromChat(VKUserID_t iChatId, VKUserID_t iUserId, const JSONNode &jnMsg, const JSONNode &jnFUsers); diff --git a/protocols/VKontakte/src/vk_queue.cpp b/protocols/VKontakte/src/vk_queue.cpp index 94e85b826d..e42bd1db42 100644 --- a/protocols/VKontakte/src/vk_queue.cpp +++ b/protocols/VKontakte/src/vk_queue.cpp @@ -38,15 +38,11 @@ bool CVkProto::ExecuteRequest(AsyncHttpRequest *pReq) do { pReq->bNeedsRestart = false; pReq->m_iErrorCode = 0; - pReq->szUrl = pReq->m_szUrl.GetBuffer(); + pReq->m_szUrl = pReq->m_szUrl.GetBuffer(); if (!pReq->m_szParam.IsEmpty()) { if (pReq->requestType == REQUEST_GET) { str.Format("%s?%s", pReq->m_szUrl.c_str(), pReq->m_szParam.c_str()); - pReq->szUrl = str.GetBuffer(); - } - else { - pReq->pData = mir_strdup(pReq->m_szParam); - pReq->dataLength = pReq->m_szParam.GetLength(); + pReq->m_szUrl = str.GetBuffer(); } } @@ -64,7 +60,7 @@ bool CVkProto::ExecuteRequest(AsyncHttpRequest *pReq) tLocalWorkThreadTimer = m_tWorkThreadTimer = time(0); } - debugLogA("CVkProto::ExecuteRequest \n====\n%s\n====\n", pReq->szUrl); + debugLogA("CVkProto::ExecuteRequest \n====\n%s\n====\n", pReq->m_szUrl.c_str()); NLHR_PTR reply(Netlib_HttpTransaction(m_hNetlibUser, pReq)); { mir_cslock lck(m_csWorkThreadTimer); diff --git a/protocols/VKontakte/src/vk_search.cpp b/protocols/VKontakte/src/vk_search.cpp index f5da64438c..399e58945d 100644 --- a/protocols/VKontakte/src/vk_search.cpp +++ b/protocols/VKontakte/src/vk_search.cpp @@ -69,7 +69,7 @@ void CVkProto::FreeProtoShearchStruct(PROTOSEARCHBYNAME *pParam) delete pParam; } -void CVkProto::OnSearch(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnSearch(MHttpResponse *reply, AsyncHttpRequest *pReq) { PROTOSEARCHBYNAME *pParam = (PROTOSEARCHBYNAME *)pReq->pUserInfo; debugLogA("CVkProto::OnSearch %d", reply->resultCode); @@ -124,7 +124,7 @@ void CVkProto::OnSearch(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) FreeProtoShearchStruct(pParam); } -void CVkProto::OnSearchByMail(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnSearchByMail(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnSearch %d", reply->resultCode); if (reply->resultCode != 200) { diff --git a/protocols/VKontakte/src/vk_status.cpp b/protocols/VKontakte/src/vk_status.cpp index 4fb2405aa2..10e55835b9 100644 --- a/protocols/VKontakte/src/vk_status.cpp +++ b/protocols/VKontakte/src/vk_status.cpp @@ -124,7 +124,7 @@ INT_PTR __cdecl CVkProto::SvcSetStatusMsg(WPARAM, LPARAM) return 0; } -void CVkProto::OnReceiveStatusMsg(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveStatusMsg(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveStatusMsg %d", reply->resultCode); if (reply->resultCode != 200) @@ -153,7 +153,7 @@ void CVkProto::OnReceiveStatusMsg(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pR setWString("OldStatusMsg", pwszOldStatusMsg); } -void CVkProto::OnReceiveStatus(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveStatus(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveStatus %d", reply->resultCode); if (reply->resultCode != 200) diff --git a/protocols/VKontakte/src/vk_struct.cpp b/protocols/VKontakte/src/vk_struct.cpp index 2b5eb9e121..153aac408d 100644 --- a/protocols/VKontakte/src/vk_struct.cpp +++ b/protocols/VKontakte/src/vk_struct.cpp @@ -68,9 +68,9 @@ AsyncHttpRequest::AsyncHttpRequest(CVkProto *ppro, int iRequestType, LPCSTR _url m_priority = rpPriority; } -void AsyncHttpRequest::Redirect(NETLIBHTTPREQUEST *nhr) +void AsyncHttpRequest::Redirect(MHttpResponse *nhr) { - if (auto *pszHdr = Netlib_GetHeader(nhr, "Location")) + if (auto *pszHdr = nhr->FindHeader("Location")) m_szUrl = pszHdr; } diff --git a/protocols/VKontakte/src/vk_struct.h b/protocols/VKontakte/src/vk_struct.h index f25072f89f..73683a652a 100644 --- a/protocols/VKontakte/src/vk_struct.h +++ b/protocols/VKontakte/src/vk_struct.h @@ -25,7 +25,7 @@ struct AsyncHttpRequest : public MTHttpRequest AsyncHttpRequest(); AsyncHttpRequest(CVkProto*, int iRequestType, LPCSTR szUrl, bool bSecure, MTHttpRequestHandler pFunc, RequestPriority rpPriority = rpMedium); - void Redirect(NETLIBHTTPREQUEST*); + void Redirect(MHttpResponse*); int m_iRetry; int m_iErrorCode; diff --git a/protocols/VKontakte/src/vk_thread.cpp b/protocols/VKontakte/src/vk_thread.cpp index 393a215079..6f7d0b7791 100644 --- a/protocols/VKontakte/src/vk_thread.cpp +++ b/protocols/VKontakte/src/vk_thread.cpp @@ -200,7 +200,7 @@ void CVkProto::OnLoggedOut() ///////////////////////////////////////////////////////////////////////////////////////// -void CVkProto::OnOAuthAuthorize(NETLIBHTTPREQUEST *reply, AsyncHttpRequest*) +void CVkProto::OnOAuthAuthorize(MHttpResponse *reply, AsyncHttpRequest*) { debugLogA("CVkProto::OnOAuthAuthorize %d", reply->resultCode); GrabCookies(reply, szVKCookieDomain); @@ -225,7 +225,7 @@ void CVkProto::OnOAuthAuthorize(NETLIBHTTPREQUEST *reply, AsyncHttpRequest*) } if (reply->resultCode == 302) { // manual redirect - LPCSTR pszLocation = Netlib_GetHeader(reply, "Location"); + LPCSTR pszLocation = reply->FindHeader("Location"); if (pszLocation) { if (!_strnicmp(pszLocation, szBlankUrl, sizeof(szBlankUrl) - 1)) { m_szAccessToken = nullptr; @@ -283,12 +283,12 @@ void CVkProto::OnOAuthAuthorize(NETLIBHTTPREQUEST *reply, AsyncHttpRequest*) return; } - if (reply->resultCode != 200 || !reply->pData || (!(strstr(reply->pData, "method=\"post\"") || strstr(reply->pData, "method=\"POST\"")) && !strstr(reply->pData, "meta http-equiv=\"refresh\""))) { // something went wrong + if (reply->resultCode != 200 || reply->body.IsEmpty() || (!(strstr(reply->body, "method=\"post\"") || strstr(reply->body, "method=\"POST\"")) && !strstr(reply->body, "meta http-equiv=\"refresh\""))) { // something went wrong ConnectionFailed(LOGINERR_NOSERVER); return; } - LPCSTR pBlankUrl = strstr(reply->pData, szBlankUrl); + LPCSTR pBlankUrl = strstr(reply->body, szBlankUrl); if (pBlankUrl) { debugLogA("CVkProto::OnOAuthAuthorize blank ulr found"); m_szAccessToken = nullptr; @@ -311,10 +311,10 @@ void CVkProto::OnOAuthAuthorize(NETLIBHTTPREQUEST *reply, AsyncHttpRequest*) return; } - char* pMsgWarning = strstr(reply->pData, "service_msg_warning"); + auto *pMsgWarning = strstr(reply->body, "service_msg_warning"); if (pMsgWarning) { - char *p1 = strchr(pMsgWarning, '>'); - char *p2 = strchr(pMsgWarning, '<'); + auto *p1 = strchr(pMsgWarning, '>'); + auto *p2 = strchr(pMsgWarning, '<'); if (p1 && p2 && (p1 + 1 < p2)) { CMStringA szMsg(p1 + 1, (int)(p2 - p1 - 1)); MsgPopup(ptrW(mir_utf8decodeW(szMsg)), TranslateT("Service message"), true); @@ -325,7 +325,7 @@ void CVkProto::OnOAuthAuthorize(NETLIBHTTPREQUEST *reply, AsyncHttpRequest*) } CMStringA szAction, szBody; - bool bSuccess = AutoFillForm(reply->pData, szAction, szBody); + bool bSuccess = AutoFillForm(reply->body.GetBuffer(), szAction, szBody); if (!bSuccess || szAction.IsEmpty() || szBody.IsEmpty()) { if (m_bPrevError) { ConnectionFailed(LOGINERR_NOSERVER); @@ -381,7 +381,7 @@ void CVkProto::RetrieveMyInfo() Push(new AsyncHttpRequest(this, REQUEST_GET, "/method/users.get.json", true, &CVkProto::OnReceiveMyInfo, AsyncHttpRequest::rpHigh)); } -void CVkProto::OnReceiveMyInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveMyInfo(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveMyInfo %d", reply->resultCode); if (reply->resultCode != 200) { @@ -723,7 +723,7 @@ void CVkProto::RetrieveUsersInfo(bool bFreeOffline, bool bRepeat) } -void CVkProto::OnReceiveUserInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveUserInfo(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveUserInfo %d", reply->resultCode); @@ -801,7 +801,7 @@ void CVkProto::OnReceiveUserInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe } } -void CVkProto::OnReceiveGroupInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveGroupInfo(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveUserInfo %d", reply->resultCode); @@ -887,7 +887,7 @@ void CVkProto::RetrieveFriends(bool bCleanNonFriendContacts) << CHAR_PARAM("fields", szFieldsName))->pUserInfo = new CVkSendMsgParam(0, bCleanNonFriendContacts ? 1 : 0); } -void CVkProto::OnReceiveFriends(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveFriends(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveFriends %d", reply->resultCode); if (reply->resultCode != 200 || !IsOnline()) @@ -983,7 +983,7 @@ INT_PTR __cdecl CVkProto::SvcDeleteFriend(WPARAM hContact, LPARAM flag) return 0; } -void CVkProto::OnReceiveDeleteFriend(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) +void CVkProto::OnReceiveDeleteFriend(MHttpResponse *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveDeleteFriend %d", reply->resultCode); CVkSendMsgParam *param = (CVkSendMsgParam*)pReq->pUserInfo; -- cgit v1.2.3