summaryrefslogtreecommitdiff
path: root/protocols/VKontakte/src/vk_struct.h
diff options
context:
space:
mode:
authorSergey Bolhovskoy <elzorfox@ya.ru>2015-09-07 15:30:02 +0000
committerSergey Bolhovskoy <elzorfox@ya.ru>2015-09-07 15:30:02 +0000
commitc76cb483df20f8058deedcf5500b20ea5af98cf6 (patch)
treef8037ae70e781efbde6d56864c7cb9b9f508e15c /protocols/VKontakte/src/vk_struct.h
parent19dbdd9ae7fd04bde5d5761bce97344842d2a6d9 (diff)
VKontakte:
code refactoring fix memory leaks and corruption fix for support MessageState version bump git-svn-id: http://svn.miranda-ng.org/main/trunk@15294 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/VKontakte/src/vk_struct.h')
-rw-r--r--protocols/VKontakte/src/vk_struct.h225
1 files changed, 225 insertions, 0 deletions
diff --git a/protocols/VKontakte/src/vk_struct.h b/protocols/VKontakte/src/vk_struct.h
new file mode 100644
index 0000000000..ea93b42d02
--- /dev/null
+++ b/protocols/VKontakte/src/vk_struct.h
@@ -0,0 +1,225 @@
+/*
+Copyright (c) 2013-15 Miranda NG project (http://miranda-ng.org)
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation version 2
+of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stdafx.h"
+#pragma once
+
+typedef void (CVkProto::*VK_REQUEST_HANDLER)(NETLIBHTTPREQUEST*, struct AsyncHttpRequest*);
+
+struct AsyncHttpRequest : public NETLIBHTTPREQUEST, public MZeroedObject
+{
+ enum RequestPriority { rpLow, rpMedium, rpHigh };
+
+ AsyncHttpRequest();
+ AsyncHttpRequest(CVkProto*, int iRequestType, LPCSTR szUrl, bool bSecure, VK_REQUEST_HANDLER pFunc, RequestPriority rpPriority = rpMedium);
+ ~AsyncHttpRequest();
+
+ void AddHeader(LPCSTR, LPCSTR);
+ void Redirect(NETLIBHTTPREQUEST*);
+
+ CMStringA m_szUrl;
+ CMStringA m_szParam;
+ VK_REQUEST_HANDLER m_pFunc;
+ void *pUserInfo;
+ int m_iRetry;
+ int m_iErrorCode;
+ RequestPriority m_priority;
+ static ULONG m_reqCount;
+ ULONG m_reqNum;
+ bool m_bApiReq;
+ bool bExpUrlEncode;
+ bool bNeedsRestart, bIsMainConn;
+};
+
+struct PARAM
+{
+ LPCSTR szName;
+ __forceinline PARAM(LPCSTR _name) : szName(_name)
+ {}
+};
+
+struct INT_PARAM : public PARAM
+{
+ int iValue;
+ __forceinline INT_PARAM(LPCSTR _name, int _value) :
+ PARAM(_name), iValue(_value)
+ {}
+};
+AsyncHttpRequest* operator<<(AsyncHttpRequest*, const INT_PARAM&);
+
+struct CHAR_PARAM : public PARAM
+{
+ LPCSTR szValue;
+ __forceinline CHAR_PARAM(LPCSTR _name, LPCSTR _value) :
+ PARAM(_name), szValue(_value)
+ {}
+};
+AsyncHttpRequest* operator<<(AsyncHttpRequest*, const CHAR_PARAM&);
+
+struct TCHAR_PARAM : public PARAM
+{
+ LPCTSTR tszValue;
+ __forceinline TCHAR_PARAM(LPCSTR _name, LPCTSTR _value) :
+ PARAM(_name), tszValue(_value)
+ {}
+};
+AsyncHttpRequest* operator<<(AsyncHttpRequest*, const TCHAR_PARAM&);
+
+struct CVkFileUploadParam : public MZeroedObject {
+ enum VKFileType { typeInvalid, typeImg, typeAudio, typeDoc, typeNotSupported };
+ TCHAR* FileName;
+ TCHAR* Desc;
+ char* atr;
+ char* fname;
+ MCONTACT hContact;
+ VKFileType filetype;
+
+ CVkFileUploadParam(MCONTACT _hContact, const TCHAR* _desc, TCHAR** _files);
+ ~CVkFileUploadParam();
+ VKFileType GetType();
+ __forceinline bool IsAccess() { return ::_taccess(FileName, 0) == 0; }
+ __forceinline char* atrName() { return atr; }
+ __forceinline char* fileName() { return fname; }
+};
+
+struct CVkSendMsgParam : public MZeroedObject
+{
+ CVkSendMsgParam(MCONTACT _hContact, int _iMsgID = 0, int _iCount = 0) :
+ hContact(_hContact),
+ iMsgID(_iMsgID),
+ iCount(_iCount)
+ {}
+
+ CVkSendMsgParam(MCONTACT _hContact, CVkFileUploadParam *_pFUP) :
+ hContact(_hContact),
+ iMsgID(-1),
+ pFUP(_pFUP)
+ {}
+
+ MCONTACT hContact;
+ int iMsgID;
+ int iCount;
+ CVkFileUploadParam *pFUP;
+};
+
+struct CVkChatMessage : public MZeroedObject
+{
+ CVkChatMessage(int _id) :
+ m_mid(_id),
+ m_uid(0),
+ m_date(0),
+ m_bHistory(false),
+ m_bIsAction(false)
+ {}
+
+ int m_mid, m_uid, m_date;
+ bool m_bHistory, m_bIsAction;
+ ptrT m_tszBody;
+};
+
+struct CVkChatUser : public MZeroedObject
+{
+ CVkChatUser(int _id) :
+ m_uid(_id),
+ m_bDel(false),
+ m_bUnknown(false)
+ {}
+
+ int m_uid;
+ bool m_bDel, m_bUnknown;
+ ptrT m_tszNick;
+};
+
+struct CVkChatInfo : public MZeroedObject
+{
+ CVkChatInfo(int _id) :
+ m_users(10, NumericKeySortT),
+ m_msgs(10, NumericKeySortT),
+ m_chatid(_id),
+ m_admin_id(0),
+ m_bHistoryRead(0),
+ m_hContact(INVALID_CONTACT_ID)
+ {}
+
+ int m_chatid, m_admin_id;
+ bool m_bHistoryRead;
+ ptrT m_tszTopic, m_tszId;
+ MCONTACT m_hContact;
+ OBJLIST<CVkChatUser> m_users;
+ OBJLIST<CVkChatMessage> m_msgs;
+
+ CVkChatUser* GetUserById(LPCTSTR);
+};
+
+struct CVkUserInfo : public MZeroedObject {
+ CVkUserInfo(LONG _UserId) :
+ m_UserId(_UserId),
+ m_bIsGroup(false)
+ {}
+
+ CVkUserInfo(LONG _UserId, bool _bIsGroup, CMString& _tszUserNick, CMString& _tszLink, MCONTACT _hContact = NULL) :
+ m_UserId(_UserId),
+ m_bIsGroup(_bIsGroup),
+ m_tszUserNick(_tszUserNick),
+ m_tszLink(_tszLink),
+ m_hContact(_hContact)
+ {}
+
+ LONG m_UserId;
+ MCONTACT m_hContact;
+ CMString m_tszUserNick;
+ CMString m_tszLink;
+ bool m_bIsGroup;
+};
+
+enum VKObjType { vkNull, vkPost, vkPhoto, vkVideo, vkComment, vkTopic, vkUsers, vkCopy, vkInvite };
+
+struct CVKNotification {
+ TCHAR *ptszType;
+ VKObjType vkParent, vkFeedback;
+ TCHAR *ptszTranslate;
+};
+
+struct CVKNewsItem : public MZeroedObject {
+ CVKNewsItem() :
+ tDate(NULL),
+ vkUser(NULL),
+ bIsGroup(false),
+ bIsRepost(false),
+ vkFeedbackType(vkNull),
+ vkParentType(vkNull)
+ {}
+
+ CMString tszId;
+ time_t tDate;
+ CVkUserInfo *vkUser;
+ CMString tszText;
+ CMString tszLink;
+ CMString tszType;
+ VKObjType vkFeedbackType, vkParentType;
+ bool bIsGroup;
+ bool bIsRepost;
+};
+
+enum VKBBCType { vkbbcB, vkbbcI, vkbbcS, vkbbcU, vkbbcImg, vkbbcUrl, vkbbcSize, vkbbcColor };
+enum BBCSupport { bbcNo, bbcBasic, bbcAdvanced };
+
+struct CVKBBCItem {
+ VKBBCType vkBBCType;
+ BBCSupport vkBBCSettings;
+ TCHAR *ptszTempate;
+}; \ No newline at end of file