blob: 78a8edf271ae81939a5542a350e035a718ecf1c4 [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:36 +00001// 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