feature(relay): added route for deleting transfers on relay server
This commit is contained in:
parent
63ca7aa3ef
commit
224fd58639
2 changed files with 54 additions and 0 deletions
|
|
@ -24,6 +24,7 @@ use axum::{
|
||||||
};
|
};
|
||||||
|
|
||||||
use futures_util::StreamExt;
|
use futures_util::StreamExt;
|
||||||
|
use serde_json::json;
|
||||||
use std::{env, net::SocketAddr, sync::Arc};
|
use std::{env, net::SocketAddr, sync::Arc};
|
||||||
use tokio::{
|
use tokio::{
|
||||||
net::TcpListener,
|
net::TcpListener,
|
||||||
|
|
@ -99,6 +100,7 @@ pub async fn start_ws(port: Option<&i32>, listen_addr: Option<&String>) {
|
||||||
.route("/ws", get(ws_handler))
|
.route("/ws", get(ws_handler))
|
||||||
.route("/upload", post(upload_info))
|
.route("/upload", post(upload_info))
|
||||||
.route("/download/:name", get(download_info))
|
.route("/download/:name", get(download_info))
|
||||||
|
.route("/download_success/:name", post(download_success))
|
||||||
.with_state(server)
|
.with_state(server)
|
||||||
.layer(
|
.layer(
|
||||||
TraceLayer::new_for_http()
|
TraceLayer::new_for_http()
|
||||||
|
|
@ -320,3 +322,53 @@ pub async fn download_info(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn download_success(
|
||||||
|
State(shared_state): State<Arc<RwLock<AppState>>>,
|
||||||
|
Path(name): Path<String>,
|
||||||
|
) -> impl IntoResponse {
|
||||||
|
let mut data = shared_state.write().await;
|
||||||
|
if let Some(index) = data
|
||||||
|
.transfers
|
||||||
|
.iter()
|
||||||
|
.position(|request| request.name == name)
|
||||||
|
{
|
||||||
|
debug!("Found Transfer by name '{name}'");
|
||||||
|
data.transfers.remove(index);
|
||||||
|
debug!("Transfer deleted");
|
||||||
|
(
|
||||||
|
StatusCode::OK,
|
||||||
|
Json(json!({
|
||||||
|
"message": "transfer deleted"
|
||||||
|
})),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
warn!("couldn't find transfer-name: {}", name);
|
||||||
|
(
|
||||||
|
StatusCode::NOT_FOUND,
|
||||||
|
Json(json!({
|
||||||
|
"message": "transfer not found"
|
||||||
|
})),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// match data.iter().find(|request| request.body.name == name) {
|
||||||
|
// Some(request) => {
|
||||||
|
// debug!("Found transfer name.");
|
||||||
|
// return (
|
||||||
|
// StatusCode::OK,
|
||||||
|
// Json(json!({
|
||||||
|
// "message" : "transfer deleted"
|
||||||
|
// })),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// None => {
|
||||||
|
// warn!("couldn't find transfer-name: {}", name);
|
||||||
|
// return (
|
||||||
|
// StatusCode::NOT_FOUND,
|
||||||
|
// Json(json!({
|
||||||
|
// "message" : "transfer not found"
|
||||||
|
// })),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::relay::appstate::AppState;
|
use crate::relay::appstate::AppState;
|
||||||
use crate::relay::server::download_info;
|
use crate::relay::server::download_info;
|
||||||
|
use crate::relay::server::download_success;
|
||||||
use crate::relay::server::upload_info;
|
use crate::relay::server::upload_info;
|
||||||
use crate::relay::server::ws_handler;
|
use crate::relay::server::ws_handler;
|
||||||
use axum::{
|
use axum::{
|
||||||
|
|
@ -24,6 +25,7 @@ async fn axum() -> ShuttleAxum {
|
||||||
.route("/ws", get(ws_handler))
|
.route("/ws", get(ws_handler))
|
||||||
.route("/upload", post(upload_info))
|
.route("/upload", post(upload_info))
|
||||||
.route("/download/:name", get(download_info))
|
.route("/download/:name", get(download_info))
|
||||||
|
.route("/download_success/:name", post(download_success))
|
||||||
.with_state(appstate)
|
.with_state(appstate)
|
||||||
.layer(SecureClientIpSource::ConnectInfo.into_extension());
|
.layer(SecureClientIpSource::ConnectInfo.into_extension());
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue