summaryrefslogtreecommitdiff
path: root/protocols/Teams/src/teams_server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Teams/src/teams_server.cpp')
-rw-r--r--protocols/Teams/src/teams_server.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/protocols/Teams/src/teams_server.cpp b/protocols/Teams/src/teams_server.cpp
index dc51e1ed67..472360eac7 100644
--- a/protocols/Teams/src/teams_server.cpp
+++ b/protocols/Teams/src/teams_server.cpp
@@ -155,22 +155,26 @@ void CTeamsProto::CreateSubscription()
void CTeamsProto::CreateContactSubscription()
{
- OBJLIST<char> skypenames(1);
+ CMStringA szUrl = m_szTrouterSurl;
+ if (szUrl[szUrl.GetLength() - 1] != '/')
+ szUrl += "/";
+ szUrl += "TeamsUnifiedPresenceService";
+
+ JSONNode listAdd(JSON_ARRAY); listAdd.set_name("subscriptionsToAdd");
for (auto &hContact : AccContacts())
- if (!isChatRoom(hContact))
- skypenames.insert(newStr(getId(hContact)));
-
- JSONNode contacts(JSON_ARRAY); contacts.set_name("contacts");
- for (auto &it : skypenames) {
- JSONNode contact;
- contact << CHAR_PARAM("id", it);
- contacts << contact;
- }
+ if (!isChatRoom(hContact)) {
+ JSONNode contact;
+ contact << CHAR_PARAM("mri", getId(hContact));
+ listAdd << contact;
+ }
+
+ JSONNode listRemove(JSON_ARRAY); listRemove.set_name("subscriptionsToRemove");
JSONNode node;
- node << contacts;
+ node << CHAR_PARAM("trouterUri", szUrl) << BOOL_PARAM("shouldPurgePreviousSubscriptions", true)
+ << listAdd << listRemove;
- auto *pReq = new AsyncHttpRequest(REQUEST_POST, HOST_DEFAULT, "/users/ME/contacts");
+ auto *pReq = new AsyncHttpRequest(REQUEST_POST, HOST_PRESENCE, "/pubsub/subscriptions/" + m_szEndpoint);
pReq->m_szParam = node.write().c_str();
PushRequest(pReq);
}