| /* |
| * Copyright 2012 The WebRTC Project Authors. All rights reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "webrtc/libjingle/xmpp/mucroomuniquehangoutidtask.h" |
| |
| #include "webrtc/libjingle/xmpp/constants.h" |
| |
| namespace buzz { |
| |
| MucRoomUniqueHangoutIdTask::MucRoomUniqueHangoutIdTask(XmppTaskParentInterface* parent, |
| const Jid& lookup_server_jid) |
| : IqTask(parent, STR_GET, lookup_server_jid, MakeUniqueRequestXml()) { |
| } |
| |
| // Construct a stanza to request a unique room id. eg: |
| // |
| // <unique hangout-id="true" xmlns="http://jabber.org/protocol/muc#unique"/> |
| XmlElement* MucRoomUniqueHangoutIdTask::MakeUniqueRequestXml() { |
| XmlElement* xml = new XmlElement(QN_MUC_UNIQUE_QUERY, false); |
| xml->SetAttr(QN_HANGOUT_ID, STR_TRUE); |
| return xml; |
| } |
| |
| // Handle a response like the following: |
| // |
| // <unique hangout-id="hangout_id" |
| // xmlns="http://jabber.org/protocol/muc#unique"/> |
| // muvc-private-chat-guid@groupchat.google.com |
| // </unique> |
| void MucRoomUniqueHangoutIdTask::HandleResult(const XmlElement* stanza) { |
| |
| const XmlElement* unique_elem = stanza->FirstNamed(QN_MUC_UNIQUE_QUERY); |
| if (unique_elem == NULL || |
| !unique_elem->HasAttr(QN_HANGOUT_ID)) { |
| SignalError(this, stanza); |
| return; |
| } |
| |
| std::string hangout_id = unique_elem->Attr(QN_HANGOUT_ID); |
| |
| SignalResult(this, hangout_id); |
| } |
| |
| } // namespace buzz |