xmpp-rs/xmpp/src/iq/mod.rs

29 lines
1,018 B
Rust
Raw Normal View History

2023-12-29 18:18:38 +01:00
// Copyright (c) 2023 xmpp-rs contributors.
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
use tokio_xmpp::parsers::iq::{Iq, IqType};
2023-12-29 18:18:38 +01:00
use crate::{Agent, Event};
2023-12-29 18:18:38 +01:00
pub mod get;
pub mod result;
pub mod set;
2023-12-29 18:18:38 +01:00
pub async fn handle_iq(agent: &mut Agent, iq: Iq) -> Vec<Event> {
let mut events = vec![];
let from = iq
.from
.clone()
.unwrap_or_else(|| agent.client.bound_jid().unwrap().clone());
if let IqType::Get(payload) = iq.payload {
get::handle_iq_get(agent, &mut events, from, iq.to, iq.id, payload).await;
2023-12-29 18:18:38 +01:00
} else if let IqType::Result(Some(payload)) = iq.payload {
result::handle_iq_result(agent, &mut events, from, iq.to, iq.id, payload).await;
} else if let IqType::Set(payload) = iq.payload {
set::handle_iq_set(agent, &mut events, from, iq.to, iq.id, payload).await;
2023-12-29 18:18:38 +01:00
}
events
}