From 42f650093d1e855ef0ddbbc7dd5fd6f85e5f7279 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Fri, 10 Apr 2015 06:32:35 +0000 Subject: skype search 1st attempt git-svn-id: http://svn.miranda-ng.org/main/trunk@12722 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/SkypeWeb/src/skype_search.cpp | 121 ++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 protocols/SkypeWeb/src/skype_search.cpp (limited to 'protocols/SkypeWeb/src/skype_search.cpp') diff --git a/protocols/SkypeWeb/src/skype_search.cpp b/protocols/SkypeWeb/src/skype_search.cpp new file mode 100644 index 0000000000..e8ed4c3b5d --- /dev/null +++ b/protocols/SkypeWeb/src/skype_search.cpp @@ -0,0 +1,121 @@ +/* +Copyright (c) 2015 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 . +*/ + +#include "common.h" + +HANDLE CSkypeProto::SearchBasic(const PROTOCHAR* id) +{ + ForkThread(&CSkypeProto::SearchBasicThread, (void *)id); + return (HANDLE)1; +} + +void CSkypeProto::SearchBasicThread(void* id) +{ + debugLogA("CSkypeProto::OnSearchBasicThread"); + if (!IsOnline()) + return; + ptrA token(getStringA("TokenSecret")); + //need to convert search string + char *string = mir_t2a((TCHAR*)id); + PushRequest(new GetSearchRequest(token, (char*)string), &CSkypeProto::OnSearch); +} + +void CSkypeProto::OnSearch(const NETLIBHTTPREQUEST *response) +{ + if (response == NULL) + return; + + JSONROOT root(response->pData); + if (root == NULL) + return; + + /*PROTOSEARCHBYNAME *pParam = (PROTOSEARCHBYNAME *)pReq->pUserInfo; + debugLogA("CSkypeProto::OnSearch %d", reply->resultCode); + if (reply->resultCode != 200) { + if (pParam) { + mir_free(pParam->pszFirstName); + mir_free(pParam->pszLastName); + mir_free(pParam->pszNick); + delete pParam; + } + ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0); + return; + } + + JSONROOT pRoot; + JSONNODE *pResponse = CheckJsonResponse(pReq, reply, pRoot); + if (pResponse == NULL) { + if (pParam) { + mir_free(pParam->pszFirstName); + mir_free(pParam->pszLastName); + mir_free(pParam->pszNick); + delete pParam; + } + ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0); + return; + } + + int iCount = json_as_int(json_get(pResponse, "count")); + JSONNODE *pItems = json_get(pResponse, "items"); + if (!pItems) { + pItems = pResponse; + iCount = 1; + } + + for (int i = 0; ipszFirstName) + filter = tlstrstr(psr.firstName, pParam->pszFirstName) && filter; + if (psr.lastName&&pParam->pszLastName) + filter = tlstrstr(psr.lastName, pParam->pszLastName) && filter; + if (psr.nick&&pParam->pszNick) + filter = tlstrstr(psr.nick, pParam->pszNick) && filter; + } + + if (filter) + ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_DATA, (HANDLE)1, (LPARAM)&psr); + } + + ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0); + if (pParam) { + mir_free(pParam->pszFirstName); + mir_free(pParam->pszLastName); + mir_free(pParam->pszNick); + delete pParam; + }*/ +} \ No newline at end of file -- cgit v1.2.3