1 // Copyright 2012 Google Inc. All Rights Reserved. 2 3 4 #include "talk/xmpp/mucroomuniquehangoutidtask.h" 5 6 #include "talk/xmpp/constants.h" 7 8 namespace buzz { 9 10 MucRoomUniqueHangoutIdTask::MucRoomUniqueHangoutIdTask(XmppTaskParentInterface* parent, 11 const Jid& lookup_server_jid) 12 : IqTask(parent, STR_GET, lookup_server_jid, MakeUniqueRequestXml()) { 13 } 14 15 // Construct a stanza to request a unique room id. eg: 16 // 17 // <unique hangout-id="true" xmlns="http://jabber.org/protocol/muc#unique"/> 18 XmlElement* MucRoomUniqueHangoutIdTask::MakeUniqueRequestXml() { 19 XmlElement* xml = new XmlElement(QN_MUC_UNIQUE_QUERY, false); 20 xml->SetAttr(QN_HANGOUT_ID, STR_TRUE); 21 return xml; 22 } 23 24 // Handle a response like the following: 25 // 26 // <unique hangout-id="hangout_id" 27 // xmlns="http://jabber.org/protocol/muc#unique"/> 28 // muvc-private-chat-guid (at) groupchat.google.com 29 // </unique> 30 void MucRoomUniqueHangoutIdTask::HandleResult(const XmlElement* stanza) { 31 32 const XmlElement* unique_elem = stanza->FirstNamed(QN_MUC_UNIQUE_QUERY); 33 if (unique_elem == NULL || 34 !unique_elem->HasAttr(QN_HANGOUT_ID)) { 35 SignalError(this, stanza); 36 return; 37 } 38 39 std::string hangout_id = unique_elem->Attr(QN_HANGOUT_ID); 40 41 SignalResult(this, hangout_id); 42 } 43 44 } // namespace buzz 45