summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2015-05-01 17:13:35 +0000
committerGeorge Hazan <george.hazan@gmail.com>2015-05-01 17:13:35 +0000
commitb9852a65f0facc5c2e7239f4751050f12bc15a4d (patch)
tree63433cc2c7ba6bd376e2d606f07745564ddcfd5e /protocols
parentef97fb204e8bb9d3924c304b6b44a51070c51177 (diff)
unused file removed
git-svn-id: http://svn.miranda-ng.org/main/trunk@13337 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols')
-rw-r--r--protocols/Steam/src/Junk/steam_thread.cpp171
1 files changed, 171 insertions, 0 deletions
diff --git a/protocols/Steam/src/Junk/steam_thread.cpp b/protocols/Steam/src/Junk/steam_thread.cpp
new file mode 100644
index 0000000000..98915f87cd
--- /dev/null
+++ b/protocols/Steam/src/Junk/steam_thread.cpp
@@ -0,0 +1,171 @@
+#include "stdafx.h"
+
+void CSteamProto::PollServer(const char *token, const char *umqId, UINT32 messageId, SteamWebApi::PollApi::PollResult *pollResult)
+{
+ debugLogA("CSteamProto::PollServer: call SteamWebApi::PollApi::Poll");
+ SteamWebApi::PollApi::Poll(m_hNetlibUser, token, umqId, messageId, pollResult);
+
+ if (!pollResult->IsSuccess())
+ return;
+
+ CMStringA updatedIds;
+ for (size_t i = 0; i < pollResult->GetItemCount(); i++)
+ {
+ const SteamWebApi::PollApi::PoolItem *item = pollResult->GetAt(i);
+ switch (item->GetType())
+ {
+ case SteamWebApi::PollApi::POOL_TYPE_TYPING:
+ break;
+
+ case SteamWebApi::PollApi::POOL_TYPE_MESSAGE:
+ {
+ SteamWebApi::PollApi::Message *message = (SteamWebApi::PollApi::Message*)item;
+
+ MCONTACT hContact = FindContact(message->GetSteamId());
+ if (hContact)
+ {
+ const wchar_t *text = message->GetText();
+
+ PROTORECVEVENT recv = { 0 };
+ recv.flags = PREF_UTF;
+ recv.timestamp = message->GetTimestamp();
+ recv.szMessage = mir_utf8encodeW(text);
+
+ ProtoChainRecvMsg(hContact, &recv);
+ }
+ }
+ break;
+
+ case SteamWebApi::PollApi::POOL_TYPE_MYMESSAGE:
+ {
+ SteamWebApi::PollApi::Message *message = (SteamWebApi::PollApi::Message*)item;
+
+ MCONTACT hContact = FindContact(message->GetSteamId());
+ if (hContact)
+ {
+ const wchar_t *text = message->GetText();
+
+ AddDBEvent(hContact, EVENTTYPE_MESSAGE, time(NULL), DBEF_UTF | DBEF_SENT, lstrlen(text), (BYTE*)mir_utf8encodeW(text));
+ }
+ }
+ break;
+
+ case SteamWebApi::PollApi::POOL_TYPE_STATE:
+ {
+ SteamWebApi::PollApi::State *state = (SteamWebApi::PollApi::State*)item;
+
+ WORD status = CSteamProto::SteamToMirandaStatus(state->GetStatus());
+ const char *steamId = state->GetSteamId();
+ const wchar_t *nickname = state->GetNickname();
+
+ if (IsMe(steamId))
+ {
+ if (status == ID_STATUS_OFFLINE)
+ continue;
+
+ if (status != m_iStatus)
+ {
+ debugLogA("Change own status to %i", status);
+ WORD oldStatus = m_iStatus;
+ m_iStatus = m_iDesiredStatus = status;
+ ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, m_iStatus);
+ }
+ }
+ /*else
+ {
+ MCONTACT hContact = FindContact(steamId);
+ if (hContact)
+ SetContactStatus(hContact, status);
+ }*/
+
+ if (updatedIds.IsEmpty())
+ updatedIds.Append(steamId);
+ else
+ updatedIds.AppendFormat(",%s", steamId);
+ }
+ break;
+
+ case SteamWebApi::PollApi::POOL_TYPE_CONTACT_ADD:
+ {
+ SteamWebApi::PollApi::Relationship *crs = (SteamWebApi::PollApi::Relationship*)item;
+
+ const char *steamId = crs->GetSteamId();
+ if (updatedIds.IsEmpty())
+ updatedIds.Append(steamId);
+ else
+ updatedIds.AppendFormat(",%s", steamId);
+ }
+ break;
+
+ case SteamWebApi::PollApi::POOL_TYPE_CONTACT_REMOVE:
+ {
+ SteamWebApi::PollApi::Relationship *crs = (SteamWebApi::PollApi::Relationship*)item;
+
+ const char *steamId = crs->GetSteamId();
+ MCONTACT hContact = FindContact(steamId);
+ if (hContact)
+ CallService(MS_DB_CONTACT_DELETE, hContact, 0);
+ }
+ break;
+
+ case SteamWebApi::PollApi::POOL_TYPE_CONTACT_REQUEST:
+ {
+ SteamWebApi::PollApi::Relationship *crs = (SteamWebApi::PollApi::Relationship*)item;
+
+ const char *steamId = crs->GetSteamId();
+
+ MCONTACT hContact = FindContact(steamId);
+ if (!hContact)
+ hContact = AddContact(steamId, true);
+
+ RaiseAuthRequestThread((void*)hContact);
+ }
+ break;
+ }
+ }
+
+ if (!updatedIds.IsEmpty())
+ UpdateContactsThread(mir_strdup(updatedIds));
+}
+
+void CSteamProto::PollingThread(void*)
+{
+ debugLogA("CSteamProto::PollingThread: entering");
+
+ ptrA token(getStringA("TokenSecret"));
+ ptrA umqId(getStringA("UMQID"));
+ UINT32 messageId = getDword("MessageID", 0);
+
+ SteamWebApi::PollApi::PollResult pollResult;
+ while (!m_bTerminated)
+ {
+ PollServer(token, umqId, messageId, &pollResult);
+
+ if (pollResult.IsNeedRelogin())
+ {
+ debugLogA("CSteamProto::PollingThread: need to relogin");
+ SetStatus(ID_STATUS_OFFLINE);
+ }
+
+ if (!pollResult.IsSuccess())
+ {
+ debugLogA("CSteamProto::PollServer: call SteamWebApi::PollApi::Poll");
+ SetStatus(ID_STATUS_OFFLINE);
+
+ // token has expired
+ if (pollResult.GetStatus() == HTTP_STATUS_UNAUTHORIZED)
+ {
+ delSetting("TokenSecret");
+ //delSetting("Cookie");
+ }
+
+ break;
+ }
+
+ messageId = pollResult.GetMessageId();
+ setDword("MessageID", messageId);
+ }
+
+ m_hPollingThread = NULL;
+ debugLogA("CSteamProto::PollingThread: leaving");
+} \ No newline at end of file