summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/VKontakte/src/version.h2
-rw-r--r--protocols/VKontakte/src/vk_proto.cpp12
-rw-r--r--protocols/VKontakte/src/vk_proto.h5
-rw-r--r--protocols/VKontakte/src/vk_search.cpp65
-rw-r--r--protocols/VKontakte/vk_10.vcxproj1
-rw-r--r--protocols/VKontakte/vk_10.vcxproj.filters3
-rw-r--r--protocols/VKontakte/vk_12.vcxproj1
-rw-r--r--protocols/VKontakte/vk_12.vcxproj.filters3
8 files changed, 88 insertions, 4 deletions
diff --git a/protocols/VKontakte/src/version.h b/protocols/VKontakte/src/version.h
index 391e2c1638..07eecbd9c4 100644
--- a/protocols/VKontakte/src/version.h
+++ b/protocols/VKontakte/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 1
#define __RELEASE_NUM 0
-#define __BUILD_NUM 14
+#define __BUILD_NUM 15
#include <stdver.h>
diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp
index 249f1da6fb..1e0a96bc65 100644
--- a/protocols/VKontakte/src/vk_proto.cpp
+++ b/protocols/VKontakte/src/vk_proto.cpp
@@ -331,10 +331,10 @@ int CVkProto::OnEvent(PROTOEVENTTYPE event, WPARAM wParam, LPARAM lParam)
}
//////////////////////////////////////////////////////////////////////////////
-
HANDLE CVkProto::SearchBasic(const PROTOCHAR* id)
{
- return 0;
+ ForkThread(&CVkProto::SearchBasicThread, (void *) id);
+ return (HANDLE)1;
}
HANDLE CVkProto::SearchByEmail(const PROTOCHAR* email)
@@ -349,7 +349,13 @@ HANDLE CVkProto::SearchByName(const PROTOCHAR* nick, const PROTOCHAR* firstName,
MCONTACT CVkProto::AddToList(int flags, PROTOSEARCHRESULT* psr)
{
- return NULL;
+ int uid = _ttoi(psr->id);
+ if (!uid)
+ return NULL;
+
+ MCONTACT hConnact = FindUser(uid, true);
+ RetrieveUserInfo(uid);
+ return hConnact;
}
int CVkProto::AuthRequest(MCONTACT hContact,const PROTOCHAR *message)
diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h
index 466ac13fdb..df8d7a2072 100644
--- a/protocols/VKontakte/src/vk_proto.h
+++ b/protocols/VKontakte/src/vk_proto.h
@@ -202,6 +202,11 @@ struct CVkProto : public PROTO<CVkProto>
void UnInitMenus();
int __cdecl OnPreBuildContactMenu(WPARAM hContact, LPARAM);
+ //==== Search ========================================================================
+
+ void __cdecl SearchBasicThread(void* id);
+ void OnSearchBasic(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
+
//==== Misc ==========================================================================
TCHAR* GetUserStoredPassword(void);
diff --git a/protocols/VKontakte/src/vk_search.cpp b/protocols/VKontakte/src/vk_search.cpp
new file mode 100644
index 0000000000..158d949d8b
--- /dev/null
+++ b/protocols/VKontakte/src/vk_search.cpp
@@ -0,0 +1,65 @@
+/*
+Copyright (c) 2013-14 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"
+
+void CVkProto::SearchBasicThread(void* id)
+{
+ debugLogA("CVkProto::OnSearchBasicThread");
+ Push(new AsyncHttpRequest(this, REQUEST_GET, "/method/users.get.json", true, &CVkProto::OnSearchBasic)
+ << TCHAR_PARAM("user_ids", (TCHAR *) id)
+ << VER_API);
+
+}
+
+void CVkProto::OnSearchBasic(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq)
+{
+ debugLogA("CVkProto::OnSearchBasic %d", reply->resultCode);
+ if (reply->resultCode != 200){
+ ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0);
+ return;
+ }
+
+ JSONROOT pRoot;
+ JSONNODE *pResponse = CheckJsonResponse(pReq, reply, pRoot);
+ if (pResponse == NULL){
+ ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0);
+ return;
+ }
+
+ for (size_t i = 0;; i++) {
+ PROTOSEARCHRESULT psr = { sizeof(psr) };
+ psr.flags = PSR_TCHAR;
+
+ JSONNODE *pRecord = json_at(pResponse, i);
+ if (pRecord == NULL)
+ break;
+
+ CMString tszNick;
+ psr.id = mir_wstrdup(json_as_string(json_get(pRecord, "id")));
+ psr.firstName = mir_wstrdup(json_as_string(json_get(pRecord, "first_name")));
+ psr.lastName = mir_wstrdup(json_as_string(json_get(pRecord, "last_name")));
+ tszNick.Append(psr.firstName);
+ tszNick.AppendChar(' ');
+ tszNick.Append(psr.lastName);
+ psr.nick = mir_wstrdup(tszNick.GetBuffer());
+
+ ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_DATA, (HANDLE)1, (LPARAM)&psr);
+ }
+
+ ProtoBroadcastAck(0, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0);
+} \ No newline at end of file
diff --git a/protocols/VKontakte/vk_10.vcxproj b/protocols/VKontakte/vk_10.vcxproj
index 82eb170a3b..8d249f393f 100644
--- a/protocols/VKontakte/vk_10.vcxproj
+++ b/protocols/VKontakte/vk_10.vcxproj
@@ -186,6 +186,7 @@
<ClCompile Include="src\vk_options.cpp" />
<ClCompile Include="src\vk_proto.cpp" />
<ClCompile Include="src\vk_queue.cpp" />
+ <ClCompile Include="src\vk_search.cpp" />
<ClCompile Include="src\vk_thread.cpp" />
</ItemGroup>
<ItemGroup>
diff --git a/protocols/VKontakte/vk_10.vcxproj.filters b/protocols/VKontakte/vk_10.vcxproj.filters
index 5e6610c062..633997a52d 100644
--- a/protocols/VKontakte/vk_10.vcxproj.filters
+++ b/protocols/VKontakte/vk_10.vcxproj.filters
@@ -45,6 +45,9 @@
<ClCompile Include="src\vk_chats.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="src\vk_search.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\version.h">
diff --git a/protocols/VKontakte/vk_12.vcxproj b/protocols/VKontakte/vk_12.vcxproj
index bd0d3344da..460d21b6db 100644
--- a/protocols/VKontakte/vk_12.vcxproj
+++ b/protocols/VKontakte/vk_12.vcxproj
@@ -189,6 +189,7 @@
<ClCompile Include="src\vk_options.cpp" />
<ClCompile Include="src\vk_proto.cpp" />
<ClCompile Include="src\vk_queue.cpp" />
+ <ClCompile Include="src\vk_search.cpp" />
<ClCompile Include="src\vk_thread.cpp" />
</ItemGroup>
<ItemGroup>
diff --git a/protocols/VKontakte/vk_12.vcxproj.filters b/protocols/VKontakte/vk_12.vcxproj.filters
index f52152d3af..450e52b623 100644
--- a/protocols/VKontakte/vk_12.vcxproj.filters
+++ b/protocols/VKontakte/vk_12.vcxproj.filters
@@ -45,6 +45,9 @@
<ClCompile Include="src\vk_chats.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="src\vk_search.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\version.h">