Home | History | Annotate | Download | only in xmpp
      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