From 4c04e27349415a4e9b21f74a00cfcfddba609934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Sun, 20 Dec 2015 10:58:33 +0000 Subject: Steam: Fix getting SessionID to be able to use web api again But maybe it could be done simpler - not with this one new request. git-svn-id: http://svn.miranda-ng.org/main/trunk@15910 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Steam/src/api/session.h | 10 ++++++++++ protocols/Steam/src/steam_login.cpp | 7 ++++++- protocols/Steam/src/steam_proto.cpp | 3 ++- 3 files changed, 18 insertions(+), 2 deletions(-) (limited to 'protocols') diff --git a/protocols/Steam/src/api/session.h b/protocols/Steam/src/api/session.h index caf965803e..96fc560816 100644 --- a/protocols/Steam/src/api/session.h +++ b/protocols/Steam/src/api/session.h @@ -21,4 +21,14 @@ public: } }; +class GetSessionRequest2 : public HttpRequest +{ +public: + GetSessionRequest2() : + HttpRequest(REQUEST_GET, STEAM_WEB_URL) + { + flags = NLHRF_HTTP11 | NLHRF_SSL | NLHRF_NODUMP; + } +}; + #endif //_STEAM_REQUEST_SESSION_H_ diff --git a/protocols/Steam/src/steam_login.cpp b/protocols/Steam/src/steam_login.cpp index a063870600..f2d06b208d 100644 --- a/protocols/Steam/src/steam_login.cpp +++ b/protocols/Steam/src/steam_login.cpp @@ -262,6 +262,11 @@ void CSteamProto::OnAuthorizationSuccess(const JSONNode &node) new GetSessionRequest(token.c_str(), steamId.c_str(), cookie.c_str()), &CSteamProto::OnGotSession); + // We need to load homepage to get sessionid cookie + PushRequest( + new GetSessionRequest2(), + &CSteamProto::OnGotSession); + PushRequest( new LogonRequest(token.c_str()), &CSteamProto::OnLoggedOn); @@ -269,7 +274,7 @@ void CSteamProto::OnAuthorizationSuccess(const JSONNode &node) void CSteamProto::OnGotSession(const HttpResponse *response) { - if(!response) + if (!response) return; for (int i = 0; i < response->headersCount; i++) diff --git a/protocols/Steam/src/steam_proto.cpp b/protocols/Steam/src/steam_proto.cpp index 8644f9fa50..8d70098aa0 100644 --- a/protocols/Steam/src/steam_proto.cpp +++ b/protocols/Steam/src/steam_proto.cpp @@ -325,7 +325,8 @@ int CSteamProto::SetStatus(int new_status) requestQueue->Start(); ptrA token(getStringA("TokenSecret")); - if (mir_strlen(token) > 0) + ptrA sessionId(getStringA("SessionID")); + if (mir_strlen(token) > 0 && mir_strlen(sessionId) > 0) { PushRequest( new LogonRequest(token), -- cgit v1.2.3