From 22eb281dd4b12e29319f37d4adff4443e382d762 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Tue, 29 Jan 2013 17:27:41 +0100 Subject: [PATCH] Skype: initial support for custom groups --- backends/skype/main.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/backends/skype/main.cpp b/backends/skype/main.cpp index 6e700132..6386a632 100644 --- a/backends/skype/main.cpp +++ b/backends/skype/main.cpp @@ -100,6 +100,7 @@ class Skype { int m_timer; int m_counter; int fd_output; + std::map m_groups; }; class SpectrumNetworkPlugin : public NetworkPlugin { @@ -702,6 +703,32 @@ static void handle_skype_message(std::string &message, Skype *sk) { np->handleAuthorization(sk->getUser(), cmd[1]); } } + else if (cmd[0] == "GROUP") { + if (cmd[2] == "DISPLAYNAME") { + //GROUP 810 DISPLAYNAME My Friends + std::string grp = GET_RESPONSE_DATA(message, "DISPLAYNAME"); + std::string users = sk->send_command("GET GROUP " + cmd[1] + " USERS"); + try { + users = GET_RESPONSE_DATA(users, "USERS"); + } + catch (std::out_of_range& oor) { + return; + } + + std::vector data; + boost::split(data, users, boost::is_any_of(",")); + BOOST_FOREACH(std::string u, data) { + GET_PROPERTY(alias, "USER", cmd[1], "FULLNAME"); + GET_PROPERTY(mood_text, "USER", cmd[1], "MOOD_TEXT"); + GET_PROPERTY(st, "USER", cmd[1], "ONLINESTATUS"); + pbnetwork::StatusType status = getStatus(st); + + std::vector groups; + groups.push_back(grp); + np->handleBuddyChanged(sk->getUser(), u, alias, groups, status, mood_text); + } + } + } else if (cmd[0] == "CHATMESSAGE") { if (cmd[3] == "RECEIVED") { GET_PROPERTY(body, "CHATMESSAGE", cmd[1], "BODY");