tokio-xmpp: Update to the new jid crate

This helps a bit thanks to fewer clones, but otherwise there are very
few changes.
This commit is contained in:
Emmanuel Gil Peyrot 2023-06-20 14:35:28 +02:00
parent 5582d089bd
commit 0532f12d4a
5 changed files with 10 additions and 12 deletions

View file

@ -109,13 +109,13 @@ impl Client {
jid: Jid, jid: Jid,
password: String, password: String,
) -> Result<XMPPStream, Error> { ) -> Result<XMPPStream, Error> {
let username = jid.clone().node().unwrap(); let username = jid.node().unwrap();
let password = password; let password = password;
// TCP connection // TCP connection
let tcp_stream = match server { let tcp_stream = match server {
ServerConfig::UseSrv => { ServerConfig::UseSrv => {
connect_with_srv(&jid.clone().domain(), "_xmpp-client._tcp", 5222).await? connect_with_srv(jid.domain(), "_xmpp-client._tcp", 5222).await?
} }
ServerConfig::Manual { host, port } => connect_to_host(host.as_str(), port).await?, ServerConfig::Manual { host, port } => connect_to_host(host.as_str(), port).await?,
}; };

View file

@ -4,7 +4,6 @@ use std::marker::Unpin;
use tokio::io::{AsyncRead, AsyncWrite}; use tokio::io::{AsyncRead, AsyncWrite};
use xmpp_parsers::bind::{BindQuery, BindResponse}; use xmpp_parsers::bind::{BindQuery, BindResponse};
use xmpp_parsers::iq::{Iq, IqType}; use xmpp_parsers::iq::{Iq, IqType};
use xmpp_parsers::Jid;
use crate::xmpp_codec::Packet; use crate::xmpp_codec::Packet;
use crate::xmpp_stream::XMPPStream; use crate::xmpp_stream::XMPPStream;
@ -16,11 +15,10 @@ pub async fn bind<S: AsyncRead + AsyncWrite + Unpin>(
mut stream: XMPPStream<S>, mut stream: XMPPStream<S>,
) -> Result<XMPPStream<S>, Error> { ) -> Result<XMPPStream<S>, Error> {
if stream.stream_features.can_bind() { if stream.stream_features.can_bind() {
let resource = if let Jid::Full(jid) = stream.jid.clone() { let resource = stream
Some(jid.resource) .jid
} else { .resource()
None .and_then(|resource| Some(resource.to_owned()));
};
let iq = Iq::from_set(BIND_REQ_ID, BindQuery::new(resource)); let iq = Iq::from_set(BIND_REQ_ID, BindQuery::new(resource));
stream.send_stanza(iq).await?; stream.send_stanza(iq).await?;

View file

@ -50,7 +50,7 @@ impl Client {
} }
async fn connect(jid: Jid, password: String) -> Result<XMPPStream, Error> { async fn connect(jid: Jid, password: String) -> Result<XMPPStream, Error> {
let username = jid.clone().node().unwrap(); let username = jid.node().unwrap();
let password = password; let password = password;
let domain = idna::domain_to_ascii(&jid.clone().domain()).map_err(|_| Error::Idna)?; let domain = idna::domain_to_ascii(&jid.clone().domain()).map_err(|_| Error::Idna)?;

View file

@ -29,7 +29,7 @@ use crate::{Error, ProtocolError};
async fn get_tls_stream<S: AsyncRead + AsyncWrite + Unpin>( async fn get_tls_stream<S: AsyncRead + AsyncWrite + Unpin>(
xmpp_stream: XMPPStream<S>, xmpp_stream: XMPPStream<S>,
) -> Result<TlsStream<S>, Error> { ) -> Result<TlsStream<S>, Error> {
let domain = &xmpp_stream.jid.clone().domain(); let domain = xmpp_stream.jid.domain().to_owned();
let stream = xmpp_stream.into_inner(); let stream = xmpp_stream.into_inner();
let tls_stream = TlsConnector::from(NativeTlsConnector::builder().build().unwrap()) let tls_stream = TlsConnector::from(NativeTlsConnector::builder().build().unwrap())
.connect(&domain, stream) .connect(&domain, stream)
@ -41,7 +41,7 @@ async fn get_tls_stream<S: AsyncRead + AsyncWrite + Unpin>(
async fn get_tls_stream<S: AsyncRead + AsyncWrite + Unpin>( async fn get_tls_stream<S: AsyncRead + AsyncWrite + Unpin>(
xmpp_stream: XMPPStream<S>, xmpp_stream: XMPPStream<S>,
) -> Result<TlsStream<S>, Error> { ) -> Result<TlsStream<S>, Error> {
let domain = &xmpp_stream.jid.clone().domain(); let domain = xmpp_stream.jid.domain().to_owned();
let domain = ServerName::try_from(domain.as_str())?; let domain = ServerName::try_from(domain.as_str())?;
let stream = xmpp_stream.into_inner(); let stream = xmpp_stream.into_inner();
let mut root_store = RootCertStore::empty(); let mut root_store = RootCertStore::empty();

View file

@ -16,7 +16,7 @@ pub async fn start<S: AsyncRead + AsyncWrite + Unpin>(
ns: String, ns: String,
) -> Result<XMPPStream<S>, Error> { ) -> Result<XMPPStream<S>, Error> {
let attrs = [ let attrs = [
("to".to_owned(), jid.clone().domain()), ("to".to_owned(), jid.domain().to_owned()),
("version".to_owned(), "1.0".to_owned()), ("version".to_owned(), "1.0".to_owned()),
("xmlns".to_owned(), ns.clone()), ("xmlns".to_owned(), ns.clone()),
("xmlns:stream".to_owned(), ns::STREAM.to_owned()), ("xmlns:stream".to_owned(), ns::STREAM.to_owned()),