summaryrefslogtreecommitdiff
path: root/protocols/Discord
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-02-24 18:04:30 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-02-24 18:04:30 +0300
commit53c26b123b267420707d9d337c4a2d3f32c8be81 (patch)
tree6503a81f6a21244bd8203f9014f51762894d9e3d /protocols/Discord
parent7b32f314110ff2cdb2d2ddade8e7b8ff9e5b51fb (diff)
Discord: temporary token not to be saved
Diffstat (limited to 'protocols/Discord')
-rw-r--r--protocols/Discord/src/connection.cpp1
-rw-r--r--protocols/Discord/src/http.cpp7
-rw-r--r--protocols/Discord/src/proto.cpp2
-rw-r--r--protocols/Discord/src/proto.h3
-rw-r--r--protocols/Discord/src/server.cpp8
5 files changed, 12 insertions, 9 deletions
diff --git a/protocols/Discord/src/connection.cpp b/protocols/Discord/src/connection.cpp
index 8c491d5a65..208bb1be79 100644
--- a/protocols/Discord/src/connection.cpp
+++ b/protocols/Discord/src/connection.cpp
@@ -78,6 +78,7 @@ void CDiscordProto::OnLoggedOut()
m_bOnline = false;
m_bTerminated = true;
m_iGatewaySeq = 0;
+ m_szTempToken = nullptr;
m_szCookie.Empty();
m_impl.m_heartBeat.StopSafe();
diff --git a/protocols/Discord/src/http.cpp b/protocols/Discord/src/http.cpp
index 3cd80d01fd..cf9594bcac 100644
--- a/protocols/Discord/src/http.cpp
+++ b/protocols/Discord/src/http.cpp
@@ -30,11 +30,8 @@ void CDiscordProto::Push(AsyncHttpRequest *pReq, int iTimeout)
void CDiscordProto::SaveToken(const JSONNode &data)
{
CMStringA szToken = data["token"].as_mstring();
- if (szToken.IsEmpty())
- return;
-
- m_szAccessToken = szToken.Detach();
- setString("AccessToken", m_szAccessToken);
+ if (!szToken.IsEmpty())
+ m_szTempToken = szToken.Detach();
}
/////////////////////////////////////////////////////////////////////////////////////////
diff --git a/protocols/Discord/src/proto.cpp b/protocols/Discord/src/proto.cpp
index 1789963959..98258c6b7d 100644
--- a/protocols/Discord/src/proto.cpp
+++ b/protocols/Discord/src/proto.cpp
@@ -494,7 +494,7 @@ void CDiscordProto::SendMarkRead()
mir_cslock lck(csMarkReadQueue);
while (arMarkReadQueue.getCount()) {
CDiscordUser *pUser = arMarkReadQueue[0];
- JSONNode payload; payload << CHAR_PARAM("token", m_szAccessToken);
+ JSONNode payload; payload << CHAR_PARAM("token", m_szTempToken);
CMStringA szUrl(FORMAT, "/channels/%lld/messages/%lld/ack", pUser->channelId, pUser->lastMsgId);
auto *pReq = new AsyncHttpRequest(this, REQUEST_POST, szUrl, &CDiscordProto::OnReceiveMarkRead, &payload);
Push(pReq);
diff --git a/protocols/Discord/src/proto.h b/protocols/Discord/src/proto.h
index 14451dce1f..a513ee59b3 100644
--- a/protocols/Discord/src/proto.h
+++ b/protocols/Discord/src/proto.h
@@ -183,7 +183,7 @@ class CDiscordProto : public PROTO<CDiscordProto>
wchar_t *m_wszStatusMsg[MAX_STATUS_COUNT];
- ptrA m_szAccessToken;
+ ptrA m_szAccessToken, m_szTempToken;
mir_cs m_csHttpQueue;
HANDLE m_evRequestsQueue;
@@ -350,7 +350,6 @@ public:
INT_PTR __cdecl RequestFriendship(WPARAM, LPARAM);
INT_PTR __cdecl SvcCreateAccMgrUI(WPARAM, LPARAM);
- INT_PTR __cdecl SvcGetEventIcon(WPARAM, LPARAM);
INT_PTR __cdecl GetAvatarCaps(WPARAM, LPARAM);
INT_PTR __cdecl GetAvatarInfo(WPARAM, LPARAM);
diff --git a/protocols/Discord/src/server.cpp b/protocols/Discord/src/server.cpp
index f801a1678f..c6b127c8cd 100644
--- a/protocols/Discord/src/server.cpp
+++ b/protocols/Discord/src/server.cpp
@@ -286,7 +286,13 @@ void CDiscordProto::OnReceiveToken(NETLIBHTTPREQUEST *pReply, AsyncHttpRequest*)
if (!root)
ConnectionFailed(LOGINERR_NOSERVER);
else {
- SaveToken(root.data());
+ auto &data = root.data();
+ CMStringA szToken = data["token"].as_mstring();
+ if (szToken.IsEmpty())
+ return;
+
+ m_szAccessToken = szToken.Detach();
+ setString("AccessToken", m_szAccessToken);
RetrieveMyInfo();
}
}