Move upload_file_with to upload::send module

This commit is contained in:
xmppftw@kl.netlib.re 2023-12-30 00:06:11 +01:00
parent 97f4232db7
commit f95d968a9f
3 changed files with 33 additions and 15 deletions

View file

@ -9,13 +9,11 @@
use futures::stream::StreamExt; use futures::stream::StreamExt;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
use tokio::fs::File;
pub use tokio_xmpp::parsers; pub use tokio_xmpp::parsers;
use tokio_xmpp::parsers::{ use tokio_xmpp::parsers::{
caps::{compute_disco, hash_caps, Caps}, caps::{compute_disco, hash_caps, Caps},
disco::{DiscoInfoQuery, DiscoInfoResult}, disco::{DiscoInfoQuery, DiscoInfoResult},
hashes::Algo, hashes::Algo,
http_upload::SlotRequest,
iq::Iq, iq::Iq,
message::{Body, Message, MessageType}, message::{Body, Message, MessageType},
muc::{user::MucUser, Muc}, muc::{user::MucUser, Muc},
@ -235,19 +233,7 @@ impl Agent {
} }
pub async fn upload_file_with(&mut self, service: &str, path: &Path) { pub async fn upload_file_with(&mut self, service: &str, path: &Path) {
let name = path.file_name().unwrap().to_str().unwrap().to_string(); upload::send::upload_file_with(self, service, path).await
let file = File::open(path).await.unwrap();
let size = file.metadata().await.unwrap().len();
let slot_request = SlotRequest {
filename: name,
size: size,
content_type: None,
};
let to = service.parse::<Jid>().unwrap();
let request = Iq::from_get("upload1", slot_request).with_to(to.clone());
self.uploads
.push((String::from("upload1"), to, path.to_path_buf()));
self.client.send_stanza(request.into()).await.unwrap();
} }
} }

View file

@ -5,3 +5,4 @@
// file, You can obtain one at http://mozilla.org/MPL/2.0/. // file, You can obtain one at http://mozilla.org/MPL/2.0/.
pub mod receive; pub mod receive;
pub mod send;

31
xmpp/src/upload/send.rs Normal file
View file

@ -0,0 +1,31 @@
// 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 std::path::Path;
use tokio::fs::File;
use tokio_xmpp::{
parsers::{http_upload::SlotRequest, iq::Iq},
Jid,
};
use crate::Agent;
pub async fn upload_file_with(agent: &mut Agent, service: &str, path: &Path) {
let name = path.file_name().unwrap().to_str().unwrap().to_string();
let file = File::open(path).await.unwrap();
let size = file.metadata().await.unwrap().len();
let slot_request = SlotRequest {
filename: name,
size: size,
content_type: None,
};
let to = service.parse::<Jid>().unwrap();
let request = Iq::from_get("upload1", slot_request).with_to(to.clone());
agent
.uploads
.push((String::from("upload1"), to, path.to_path_buf()));
agent.client.send_stanza(request.into()).await.unwrap();
}