summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Pösel <robyer@seznam.cz>2015-12-20 12:39:25 +0000
committerRobert Pösel <robyer@seznam.cz>2015-12-20 12:39:25 +0000
commitb76c5a1d907f6310d38230cc6aec2caf7dcc34be (patch)
treea4ff2213a860cefd03fdf8a885d53ef0544a5389
parent39fcb7e3cfe09177a5ddc6a51b3b2614c1618d7a (diff)
Steam: Support for sending typing notifications
git-svn-id: http://svn.miranda-ng.org/main/trunk@15912 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--protocols/Steam/src/api/message.h17
-rw-r--r--protocols/Steam/src/steam_messages.cpp14
-rw-r--r--protocols/Steam/src/steam_proto.h2
3 files changed, 33 insertions, 0 deletions
diff --git a/protocols/Steam/src/api/message.h b/protocols/Steam/src/api/message.h
index 4c3ec6c80f..7c38bfb430 100644
--- a/protocols/Steam/src/api/message.h
+++ b/protocols/Steam/src/api/message.h
@@ -19,4 +19,21 @@ public:
}
};
+class SendTypingRequest : public HttpRequest
+{
+public:
+ SendTypingRequest(const char *token, const char *umqId, const char *steamId) :
+ HttpRequest(REQUEST_POST, STEAM_API_URL "/ISteamWebUserPresenceOAuth/Message/v0001")
+ {
+ CMStringA data;
+ data.AppendFormat("access_token=%s&umqid=%s&steamid_dst=%s&type=typing",
+ token,
+ umqId,
+ steamId);
+
+ SetData(data, data.GetLength());
+ AddHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
+ }
+};
+
#endif //_STEAM_REQUEST_MESSAGE_H_
diff --git a/protocols/Steam/src/steam_messages.cpp b/protocols/Steam/src/steam_messages.cpp
index f55a31366a..c2172bb380 100644
--- a/protocols/Steam/src/steam_messages.cpp
+++ b/protocols/Steam/src/steam_messages.cpp
@@ -86,3 +86,17 @@ int CSteamProto::OnPreCreateMessage(WPARAM, LPARAM lParam)
return 0;
}
+
+int CSteamProto::UserIsTyping(MCONTACT hContact, int type)
+{
+ // NOTE: Steam doesn't support sending "user stopped typing" so we're sending only positive info
+ if (hContact && IsOnline() && type == PROTOTYPE_SELFTYPING_ON)
+ {
+ ptrA token(getStringA("TokenSecret"));
+ ptrA umqid(getStringA("UMQID"));
+ ptrA steamId(getStringA(hContact, "SteamID"));
+ PushRequest(new SendTypingRequest(token, umqid, steamId));
+ }
+
+ return 0;
+}
diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h
index 2784377976..3c282f35e7 100644
--- a/protocols/Steam/src/steam_proto.h
+++ b/protocols/Steam/src/steam_proto.h
@@ -58,6 +58,8 @@ public:
virtual int __cdecl SetStatus(int iNewStatus);
+ virtual int __cdecl UserIsTyping(MCONTACT hContact, int type);
+
virtual int __cdecl OnEvent(PROTOEVENTTYPE eventType, WPARAM wParam, LPARAM lParam);
// instances