From a882547f12158c9b9e01f493d19c1d8fd5eda52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Mon, 8 Dec 2014 23:53:51 +0000 Subject: Steam: Revert previous commit as it was useless work >:o git-svn-id: http://svn.miranda-ng.org/main/trunk@11292 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Steam/Steam_10.vcxproj | 1 - protocols/Steam/Steam_10.vcxproj.filters | 3 - protocols/Steam/Steam_12.vcxproj | 1 - protocols/Steam/Steam_12.vcxproj.filters | 3 - protocols/Steam/src/Steam/status.h | 24 -- protocols/Steam/src/Steam/steam.h | 1 - protocols/Steam/src/steam_account.cpp | 562 +++++++++++++++---------------- protocols/Steam/src/steam_contacts.cpp | 20 +- protocols/Steam/src/steam_proto.cpp | 21 +- protocols/Steam/src/steam_proto.h | 1 - 10 files changed, 270 insertions(+), 367 deletions(-) delete mode 100644 protocols/Steam/src/Steam/status.h diff --git a/protocols/Steam/Steam_10.vcxproj b/protocols/Steam/Steam_10.vcxproj index 3edf0526e2..7adb920113 100644 --- a/protocols/Steam/Steam_10.vcxproj +++ b/protocols/Steam/Steam_10.vcxproj @@ -201,7 +201,6 @@ - diff --git a/protocols/Steam/Steam_10.vcxproj.filters b/protocols/Steam/Steam_10.vcxproj.filters index 985a3abcb4..f652465c1e 100644 --- a/protocols/Steam/Steam_10.vcxproj.filters +++ b/protocols/Steam/Steam_10.vcxproj.filters @@ -110,9 +110,6 @@ Header Files\Steam - - Header Files\Steam - diff --git a/protocols/Steam/Steam_12.vcxproj b/protocols/Steam/Steam_12.vcxproj index 55c5854fa4..192936124f 100644 --- a/protocols/Steam/Steam_12.vcxproj +++ b/protocols/Steam/Steam_12.vcxproj @@ -204,7 +204,6 @@ - diff --git a/protocols/Steam/Steam_12.vcxproj.filters b/protocols/Steam/Steam_12.vcxproj.filters index c4727501f1..0a9df2ae03 100644 --- a/protocols/Steam/Steam_12.vcxproj.filters +++ b/protocols/Steam/Steam_12.vcxproj.filters @@ -100,9 +100,6 @@ Header Files\Steam - - - Header Files\Steam Header Files\Steam diff --git a/protocols/Steam/src/Steam/status.h b/protocols/Steam/src/Steam/status.h deleted file mode 100644 index 686ff062d3..0000000000 --- a/protocols/Steam/src/Steam/status.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef _STEAM_STATUS_H_ -#define _STEAM_STATUS_H_ - -namespace SteamWebApi -{ - class SetStatusRequest : public HttpsPostRequest - { - public: - SetStatusRequest(const char *token, const char *umqId, int state) : - HttpsPostRequest(STEAM_API_URL "/ISteamWebUserPresenceOAuth/Message/v0001") - { - CMStringA data; - data.AppendFormat("access_token=%s&umqid=%s&type=personastate&persona_state=%d", - token, - umqId, - state); - - SetData(data, data.GetLength()); - } - }; -} - - -#endif //_STEAM_STATUS_H_ \ No newline at end of file diff --git a/protocols/Steam/src/Steam/steam.h b/protocols/Steam/src/Steam/steam.h index 7809553c1b..c32da7e92a 100644 --- a/protocols/Steam/src/Steam/steam.h +++ b/protocols/Steam/src/Steam/steam.h @@ -121,6 +121,5 @@ namespace SteamWebApi #include "Steam\search.h" #include "Steam\avatar.h" #include "Steam\captcha.h" -#include "Steam\status.h" #endif //_STEAM_H_ \ No newline at end of file diff --git a/protocols/Steam/src/steam_account.cpp b/protocols/Steam/src/steam_account.cpp index 62e442a032..e1316a2521 100644 --- a/protocols/Steam/src/steam_account.cpp +++ b/protocols/Steam/src/steam_account.cpp @@ -1,298 +1,266 @@ -#include "common.h" - -bool CSteamProto::IsOnline() -{ - return m_iStatus > ID_STATUS_OFFLINE && m_hPollingThread; -} - -bool CSteamProto::IsMe(const char *steamId) -{ - ptrA mySteamId(getStringA("SteamID")); - if (!lstrcmpA(steamId, mySteamId)) - return true; - - return false; -} - -void CSteamProto::OnGotRsaKey(const NETLIBHTTPREQUEST *response, void *arg) -{ - if (response == NULL) - return; - - // load rsa key parts - JSONROOT root(response->pData); - if (!root) - return; - - JSONNODE *node = json_get(root, "success"); - if (!json_as_bool(node)) { - return; - } - - node = json_get(root, "publickey_mod"); - ptrA modulus(mir_u2a(json_as_string(node))); - - // exponent "010001" is used as constant in CSteamProto::RsaEncrypt - /*node = json_get(root, "publickey_exp"); - ptrA exponent(mir_u2a(json_as_string(node)));*/ - - node = json_get(root, "timestamp"); - ptrA timestamp(mir_u2a(json_as_string(node))); - setString("Timestamp", timestamp); - - // encrcrypt password - ptrA base64RsaEncryptedPassword; - ptrA password(getStringA("Password")); - - DWORD error = 0; - DWORD encryptedSize = 0; - DWORD passwordSize = (DWORD)strlen(password); - if ((error = RsaEncrypt(modulus, password, NULL, encryptedSize)) != 0) - { - debugLogA("CSteamProto::OnGotRsaKey: encryption error (%lu)", error); - return; - } - - BYTE *encryptedPassword = (BYTE*)mir_calloc(encryptedSize); - if ((error = RsaEncrypt(modulus, password, encryptedPassword, encryptedSize)) != 0) - { - debugLogA("CSteamProto::OnGotRsaKey: encryption error (%lu)", error); - return; - } - - base64RsaEncryptedPassword = mir_base64_encode(encryptedPassword, encryptedSize); - mir_free(encryptedPassword); - - setString("EncryptedPassword", base64RsaEncryptedPassword); - - // run authorization request - ptrA username(mir_urlEncode(ptrA(mir_utf8encodeW(getWStringA("Username"))))); - - PushRequest( - new SteamWebApi::AuthorizationRequest(username, base64RsaEncryptedPassword, timestamp), - &CSteamProto::OnAuthorization); -} - -void CSteamProto::OnAuthorization(const NETLIBHTTPREQUEST *response, void *arg) -{ - if (response == NULL) { - SetStatus(ID_STATUS_OFFLINE); - return; - } - - JSONROOT root(response->pData); - - JSONNODE *node = json_get(root, "success"); - if (json_as_bool(node) == 0) - { - node = json_get(root, "message"); - const wchar_t *message = json_as_string(node); - if (!lstrcmpi(json_as_string(node), L"Incorrect login")) - { - ShowNotification(TranslateTS(message)); - SetStatus(ID_STATUS_OFFLINE); - return; - } - - node = json_get(root, "emailauth_needed"); - if (json_as_bool(node) > 0) - { - node = json_get(root, "emailsteamid"); - ptrA guardId(mir_u2a(json_as_string(node))); - - node = json_get(root, "emaildomain"); - ptrA emailDomain(mir_utf8encodeW(json_as_string(node))); - - GuardParam guard; - lstrcpyA(guard.domain, emailDomain); - - if (DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_GUARD), NULL, CSteamProto::GuardProc, (LPARAM)&guard) != 1) { - return; - } - - ptrA username(mir_urlEncode(ptrA(mir_utf8encodeW(getWStringA("Username"))))); - ptrA base64RsaEncryptedPassword(getStringA("EncryptedPassword")); - ptrA timestamp(getStringA("Timestamp")); - - PushRequest( - new SteamWebApi::AuthorizationRequest(username, base64RsaEncryptedPassword, timestamp, guardId, guard.code), - &CSteamProto::OnAuthorization); - } - - node = json_get(root, "captcha_needed"); - if (json_as_bool(node) > 0) - { - node = json_get(root, "captcha_gid"); - ptrA captchaId(mir_u2a(json_as_string(node))); - - char url[MAX_PATH]; - mir_snprintf(url, SIZEOF(url), STEAM_COM_URL "/public/captcha.php?gid=%s", captchaId); - - SteamWebApi::GetCaptchaRequest *request = new SteamWebApi::GetCaptchaRequest(url); - request->szUrl = (char*)request->url.c_str(); - NETLIBHTTPREQUEST *response = (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)m_hNetlibUser, (LPARAM)request); - delete request; - - CaptchaParam captcha = { 0 }; - captcha.size = response->dataLength; - captcha.data = (BYTE*)mir_alloc(captcha.size); - memcpy(captcha.data, response->pData, captcha.size); - - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); - - int res = DialogBoxParam( - g_hInstance, - MAKEINTRESOURCE(IDD_CAPTCHA), - NULL, - CSteamProto::CaptchaProc, - (LPARAM)&captcha); - - mir_free(captcha.data); - - if (res != 1) - { - SetStatus(ID_STATUS_OFFLINE); - return; - } - - ptrA username(mir_urlEncode(ptrA(mir_utf8encodeW(getWStringA("Username"))))); - ptrA base64RsaEncryptedPassword(getStringA("EncryptedPassword")); - ptrA timestamp(getStringA("Timestamp")); - - PushRequest( - new SteamWebApi::AuthorizationRequest(username, base64RsaEncryptedPassword, timestamp, "-1", "", captchaId, captcha.text), - &CSteamProto::OnAuthorization); - } - - return; - } - - node = json_get(root, "login_complete"); - if (!json_as_bool(node)) - { - SetStatus(ID_STATUS_OFFLINE); - return; - } - - node = json_get(root, "oauth"); - JSONROOT nroot(ptrA(mir_u2a(json_as_string(node)))); - - node = json_get(nroot, "steamid"); - ptrA steamId(mir_u2a(json_as_string(node))); - setString("SteamID", steamId); - - node = json_get(nroot, "oauth_token"); - ptrA token(mir_u2a(json_as_string(node))); - setString("TokenSecret", token); - - node = json_get(nroot, "webcookie"); - ptrA cookie(mir_u2a(json_as_string(node))); - - delSetting("Timestamp"); - delSetting("EncryptedPassword"); - - PushRequest( - new SteamWebApi::GetSessionRequest(token, steamId, cookie), - &CSteamProto::OnGotSession); - - PushRequest( - new SteamWebApi::LogonRequest(token), - &CSteamProto::OnLoggedOn); -} - -void CSteamProto::OnGotSession(const NETLIBHTTPREQUEST *response, void *arg) -{ - if (response == NULL) - return; - - for (int i = 0; i < response->headersCount; i++) - { - if (lstrcmpiA(response->headers[i].szName, "Set-Cookie")) - continue; - - std::string cookies = response->headers[i].szValue; - size_t start = cookies.find("sessionid=") + 10; - size_t end = cookies.substr(start).find(';'); - std::string sessionId = cookies.substr(start, end - start + 10); - setString("SessionID", sessionId.c_str()); - break; - } -} - -void CSteamProto::OnLoggedOn(const NETLIBHTTPREQUEST *response, void *arg) -{ - if (response == NULL) - { - // set status to offline - m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE; - ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)ID_STATUS_CONNECTING, ID_STATUS_OFFLINE); - return; - } - - JSONROOT root(response->pData); - - JSONNODE *node = json_get(root, "error"); - ptrW error(json_as_string(node)); - if (lstrcmpi(error, L"OK")/* || response->resultCode == HTTP_STATUS_UNAUTHORIZED*/) - { - //delSetting("TokenSecret"); - //delSetting("Cookie"); - - // set status to offline - m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE; - ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)ID_STATUS_CONNECTING, ID_STATUS_OFFLINE); - return; - } - - node = json_get(root, "umqid"); - setString("UMQID", ptrA(mir_u2a(json_as_string(node)))); - - node = json_get(root, "message"); - setDword("MessageID", json_as_int(node)); - - // load contact list - ptrA token(getStringA("TokenSecret")); - ptrA steamId(getStringA("SteamID")); - - PushRequest( - new SteamWebApi::GetFriendListRequest(token, steamId), - &CSteamProto::OnGotFriendList); - - // start polling thread - m_hPollingThread = ForkThreadEx(&CSteamProto::PollingThread, 0, NULL); - - // go to online now - ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)ID_STATUS_CONNECTING, m_iStatus = m_iDesiredStatus); -} - -void CSteamProto::OnStatusChanged(const NETLIBHTTPREQUEST *response, void *arg) -{ - if (response == NULL) - { - m_iDesiredStatus = m_iStatus; - ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_FAILED, (HANDLE)m_iStatus, m_iStatus); - return; - } - - JSONROOT root(response->pData); - - /*JSONNODE *node = json_get(root, "success"); - if (!json_as_bool(node)) { - return; - } - - JSONNODE *node = json_get(root, "error"); - ptrW error(json_as_string(node)); - if (lstrcmpi(error, L"OK")/* || response->resultCode == HTTP_STATUS_UNAUTHORIZED*//*) - { - // set status to offline - m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE; - ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)ID_STATUS_CONNECTING, ID_STATUS_OFFLINE); - return; - }*/ - - int new_status = (int)arg; - int old_status = m_iStatus; - m_iStatus = m_iDesiredStatus = new_status; - ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); +#include "common.h" + +bool CSteamProto::IsOnline() +{ + return m_iStatus > ID_STATUS_OFFLINE && m_hPollingThread; +} + +bool CSteamProto::IsMe(const char *steamId) +{ + ptrA mySteamId(getStringA("SteamID")); + if (!lstrcmpA(steamId, mySteamId)) + return true; + + return false; +} + +void CSteamProto::OnGotRsaKey(const NETLIBHTTPREQUEST *response, void *arg) +{ + if (response == NULL) + return; + + // load rsa key parts + JSONROOT root(response->pData); + if (!root) + return; + + JSONNODE *node = json_get(root, "success"); + if (!json_as_bool(node)) { + return; + } + + node = json_get(root, "publickey_mod"); + ptrA modulus(mir_u2a(json_as_string(node))); + + // exponent "010001" is used as constant in CSteamProto::RsaEncrypt + /*node = json_get(root, "publickey_exp"); + ptrA exponent(mir_u2a(json_as_string(node)));*/ + + node = json_get(root, "timestamp"); + ptrA timestamp(mir_u2a(json_as_string(node))); + setString("Timestamp", timestamp); + + // encrcrypt password + ptrA base64RsaEncryptedPassword; + ptrA password(getStringA("Password")); + + DWORD error = 0; + DWORD encryptedSize = 0; + DWORD passwordSize = (DWORD)strlen(password); + if ((error = RsaEncrypt(modulus, password, NULL, encryptedSize)) != 0) + { + debugLogA("CSteamProto::OnGotRsaKey: encryption error (%lu)", error); + return; + } + + BYTE *encryptedPassword = (BYTE*)mir_calloc(encryptedSize); + if ((error = RsaEncrypt(modulus, password, encryptedPassword, encryptedSize)) != 0) + { + debugLogA("CSteamProto::OnGotRsaKey: encryption error (%lu)", error); + return; + } + + base64RsaEncryptedPassword = mir_base64_encode(encryptedPassword, encryptedSize); + mir_free(encryptedPassword); + + setString("EncryptedPassword", base64RsaEncryptedPassword); + + // run authorization request + ptrA username(mir_urlEncode(ptrA(mir_utf8encodeW(getWStringA("Username"))))); + + PushRequest( + new SteamWebApi::AuthorizationRequest(username, base64RsaEncryptedPassword, timestamp), + &CSteamProto::OnAuthorization); +} + +void CSteamProto::OnAuthorization(const NETLIBHTTPREQUEST *response, void *arg) +{ + if (response == NULL) { + SetStatus(ID_STATUS_OFFLINE); + return; + } + + JSONROOT root(response->pData); + + JSONNODE *node = json_get(root, "success"); + if (json_as_bool(node) == 0) + { + node = json_get(root, "message"); + const wchar_t *message = json_as_string(node); + if (!lstrcmpi(json_as_string(node), L"Incorrect login")) + { + ShowNotification(TranslateTS(message)); + SetStatus(ID_STATUS_OFFLINE); + return; + } + + node = json_get(root, "emailauth_needed"); + if (json_as_bool(node) > 0) + { + node = json_get(root, "emailsteamid"); + ptrA guardId(mir_u2a(json_as_string(node))); + + node = json_get(root, "emaildomain"); + ptrA emailDomain(mir_utf8encodeW(json_as_string(node))); + + GuardParam guard; + lstrcpyA(guard.domain, emailDomain); + + if (DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_GUARD), NULL, CSteamProto::GuardProc, (LPARAM)&guard) != 1) { + return; + } + + ptrA username(mir_urlEncode(ptrA(mir_utf8encodeW(getWStringA("Username"))))); + ptrA base64RsaEncryptedPassword(getStringA("EncryptedPassword")); + ptrA timestamp(getStringA("Timestamp")); + + PushRequest( + new SteamWebApi::AuthorizationRequest(username, base64RsaEncryptedPassword, timestamp, guardId, guard.code), + &CSteamProto::OnAuthorization); + } + + node = json_get(root, "captcha_needed"); + if (json_as_bool(node) > 0) + { + node = json_get(root, "captcha_gid"); + ptrA captchaId(mir_u2a(json_as_string(node))); + + char url[MAX_PATH]; + mir_snprintf(url, SIZEOF(url), STEAM_COM_URL "/public/captcha.php?gid=%s", captchaId); + + SteamWebApi::GetCaptchaRequest *request = new SteamWebApi::GetCaptchaRequest(url); + request->szUrl = (char*)request->url.c_str(); + NETLIBHTTPREQUEST *response = (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)m_hNetlibUser, (LPARAM)request); + delete request; + + CaptchaParam captcha = { 0 }; + captcha.size = response->dataLength; + captcha.data = (BYTE*)mir_alloc(captcha.size); + memcpy(captcha.data, response->pData, captcha.size); + + CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); + + int res = DialogBoxParam( + g_hInstance, + MAKEINTRESOURCE(IDD_CAPTCHA), + NULL, + CSteamProto::CaptchaProc, + (LPARAM)&captcha); + + mir_free(captcha.data); + + if (res != 1) + { + SetStatus(ID_STATUS_OFFLINE); + return; + } + + ptrA username(mir_urlEncode(ptrA(mir_utf8encodeW(getWStringA("Username"))))); + ptrA base64RsaEncryptedPassword(getStringA("EncryptedPassword")); + ptrA timestamp(getStringA("Timestamp")); + + PushRequest( + new SteamWebApi::AuthorizationRequest(username, base64RsaEncryptedPassword, timestamp, "-1", "", captchaId, captcha.text), + &CSteamProto::OnAuthorization); + } + + return; + } + + node = json_get(root, "login_complete"); + if (!json_as_bool(node)) + { + SetStatus(ID_STATUS_OFFLINE); + return; + } + + node = json_get(root, "oauth"); + JSONROOT nroot(ptrA(mir_u2a(json_as_string(node)))); + + node = json_get(nroot, "steamid"); + ptrA steamId(mir_u2a(json_as_string(node))); + setString("SteamID", steamId); + + node = json_get(nroot, "oauth_token"); + ptrA token(mir_u2a(json_as_string(node))); + setString("TokenSecret", token); + + node = json_get(nroot, "webcookie"); + ptrA cookie(mir_u2a(json_as_string(node))); + + delSetting("Timestamp"); + delSetting("EncryptedPassword"); + + PushRequest( + new SteamWebApi::GetSessionRequest(token, steamId, cookie), + &CSteamProto::OnGotSession); + + PushRequest( + new SteamWebApi::LogonRequest(token), + &CSteamProto::OnLoggedOn); +} + +void CSteamProto::OnGotSession(const NETLIBHTTPREQUEST *response, void *arg) +{ + if (response == NULL) + return; + + for (int i = 0; i < response->headersCount; i++) + { + if (lstrcmpiA(response->headers[i].szName, "Set-Cookie")) + continue; + + std::string cookies = response->headers[i].szValue; + size_t start = cookies.find("sessionid=") + 10; + size_t end = cookies.substr(start).find(';'); + std::string sessionId = cookies.substr(start, end - start + 10); + setString("SessionID", sessionId.c_str()); + break; + } +} + +void CSteamProto::OnLoggedOn(const NETLIBHTTPREQUEST *response, void *arg) +{ + if (response == NULL) + { + // set status to offline + m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE; + ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)ID_STATUS_CONNECTING, ID_STATUS_OFFLINE); + return; + } + + JSONROOT root(response->pData); + + JSONNODE *node = json_get(root, "error"); + ptrW error(json_as_string(node)); + if (lstrcmpi(error, L"OK")/* || response->resultCode == HTTP_STATUS_UNAUTHORIZED*/) + { + //delSetting("TokenSecret"); + //delSetting("Cookie"); + + // set status to offline + m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE; + ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)ID_STATUS_CONNECTING, ID_STATUS_OFFLINE); + return; + } + + node = json_get(root, "umqid"); + setString("UMQID", ptrA(mir_u2a(json_as_string(node)))); + + node = json_get(root, "message"); + setDword("MessageID", json_as_int(node)); + + // load contact list + ptrA token(getStringA("TokenSecret")); + ptrA steamId(getStringA("SteamID")); + + PushRequest( + new SteamWebApi::GetFriendListRequest(token, steamId), + &CSteamProto::OnGotFriendList); + + // start polling thread + m_hPollingThread = ForkThreadEx(&CSteamProto::PollingThread, 0, NULL); + + // go to online now + ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)ID_STATUS_CONNECTING, m_iStatus = m_iDesiredStatus); } \ No newline at end of file diff --git a/protocols/Steam/src/steam_contacts.cpp b/protocols/Steam/src/steam_contacts.cpp index 3bba9d6ac3..6ae9a913bf 100644 --- a/protocols/Steam/src/steam_contacts.cpp +++ b/protocols/Steam/src/steam_contacts.cpp @@ -120,24 +120,7 @@ void CSteamProto::UpdateContact(MCONTACT hContact, JSONNODE *data) WORD steamStatus = json_as_int(node); WORD status = SteamToMirandaStatus(steamStatus); if (hContact != NULL) - { - // contact status setWord(hContact, "Status", status); - } - else - { - // my status - // TODO: uncomment when invisible status is used in Steam proto - /*if (status == ID_STATUS_OFFLINE) - status = ID_STATUS_INVISIBLE;*/ - - if (status != ID_STATUS_OFFLINE) - { - int old_status = m_iStatus; - m_iStatus = m_iDesiredStatus = status; - ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); - } - } node = json_get(data, "gameid"); DWORD gameId = node ? atol(_T2A(json_as_string(node))) : 0; @@ -156,7 +139,8 @@ void CSteamProto::UpdateContact(MCONTACT hContact, JSONNODE *data) { if (hContact != NULL) db_unset(hContact, "CList", "StatusMsg"); - + + delSetting(hContact, "GameInfo"); delSetting(hContact, "GameID"); } } diff --git a/protocols/Steam/src/steam_proto.cpp b/protocols/Steam/src/steam_proto.cpp index 36592a4082..778c9f95ee 100644 --- a/protocols/Steam/src/steam_proto.cpp +++ b/protocols/Steam/src/steam_proto.cpp @@ -204,7 +204,7 @@ DWORD_PTR __cdecl CSteamProto:: GetCaps(int type, MCONTACT hContact) case PFLAGNUM_4: return PF4_AVATARS | PF4_NOCUSTOMAUTH | PF4_NOAUTHDENYREASON | PF4_FORCEAUTH | PF4_FORCEADDED | PF4_IMSENDUTF | PF4_SUPPORTIDLE;// | PF4_IMSENDOFFLINE | PF4_SUPPORTTYPING; case PFLAGNUM_5: - return 0; + return PF2_SHORTAWAY | PF2_LONGAWAY | PF2_HEAVYDND | PF2_OUTTOLUNCH | PF2_FREEFORCHAT; case PFLAG_UNIQUEIDTEXT: return (DWORD_PTR)Translate("SteamID"); case PFLAG_UNIQUEIDSETTING: @@ -326,15 +326,10 @@ int CSteamProto::SetStatus(int new_status) // Routing statuses not supported by Steam switch (new_status) { - case ID_STATUS_OCCUPIED: - new_status = ID_STATUS_DND; - break; - - case ID_STATUS_ONTHEPHONE: - new_status = ID_STATUS_AWAY; + case ID_STATUS_OFFLINE: break; - case ID_STATUS_INVISIBLE: + default: new_status = ID_STATUS_ONLINE; break; } @@ -368,16 +363,6 @@ int CSteamProto::SetStatus(int new_status) //ForkThread(&CSteamProto::LogInThread, NULL); StartQueue(); } - else { - ptrA token(getStringA("TokenSecret")); - ptrA sessionId(getStringA("SessionID")); - int state = MirandaToSteamState(new_status); - - PushRequest( - new SteamWebApi::SetStatusRequest(token, sessionId, state), - &CSteamProto::OnStatusChanged, - (void *)new_status); - } return 0; } diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h index 95832418fe..82dd4f925b 100644 --- a/protocols/Steam/src/steam_proto.h +++ b/protocols/Steam/src/steam_proto.h @@ -188,7 +188,6 @@ protected: void OnGotSession(const NETLIBHTTPREQUEST *response, void *arg); void OnLoggedOn(const NETLIBHTTPREQUEST *response, void *arg); - void OnStatusChanged(const NETLIBHTTPREQUEST *response, void *arg); // contacts void SetContactStatus(MCONTACT hContact, WORD status); -- cgit v1.2.3