1// Copyright 2012 Google Inc. All Rights Reserved. 2 3 4#include "talk/xmpp/mucroomuniquehangoutidtask.h" 5 6#include "talk/xmpp/constants.h" 7 8namespace buzz { 9 10MucRoomUniqueHangoutIdTask::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"/> 18XmlElement* 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@groupchat.google.com 29// </unique> 30void 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