From b604bd4b0a647743c9071d480bdf6f87214372a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Mon, 4 Apr 2022 10:42:09 +0200 Subject: [PATCH] http_private: remove AnnounceProcedureParameters struct --- aquatic_http_private/src/workers/socket/db.rs | 71 +++++-------------- 1 file changed, 17 insertions(+), 54 deletions(-) diff --git a/aquatic_http_private/src/workers/socket/db.rs b/aquatic_http_private/src/workers/socket/db.rs index 71c6909..6e7de4d 100644 --- a/aquatic_http_private/src/workers/socket/db.rs +++ b/aquatic_http_private/src/workers/socket/db.rs @@ -1,9 +1,7 @@ use std::net::IpAddr; use aquatic_common::CanonicalSocketAddr; -use aquatic_http_protocol::{ - common::{AnnounceEvent, PeerId}, request::AnnounceRequest, response::FailureResponse, -}; +use aquatic_http_protocol::{request::AnnounceRequest, response::FailureResponse}; use sqlx::{Executor, MySql, Pool}; #[derive(Debug)] @@ -15,42 +13,6 @@ impl Into for ValidatedAnnounceRequest { } } -#[derive(Debug)] -struct AnnounceProcedureParameters { - source_ip: IpAddr, - source_port: u16, - user_agent: Option, - user_token: String, - info_hash: String, - peer_id: PeerId, - event: AnnounceEvent, - uploaded: u64, - downloaded: u64, - left: u64, -} - -impl AnnounceProcedureParameters { - fn new( - source_addr: CanonicalSocketAddr, - user_agent: Option, - user_token: String, // FIXME: length - request: &AnnounceRequest, - ) -> Self { - Self { - source_ip: source_addr.get().ip(), - source_port: source_addr.get().port(), - user_agent, - user_token, - info_hash: hex::encode(request.info_hash.0), - peer_id: request.peer_id, - event: request.event, - uploaded: request.bytes_uploaded as u64, - downloaded: request.bytes_downloaded as u64, - left: request.bytes_left as u64, - } - } -} - #[derive(Debug, sqlx::FromRow)] struct AnnounceProcedureResults { announce_allowed: bool, @@ -65,10 +27,7 @@ pub async fn validate_announce_request( user_token: String, request: AnnounceRequest, ) -> Result<(ValidatedAnnounceRequest, Option), FailureResponse> { - let parameters = - AnnounceProcedureParameters::new(source_addr, user_agent, user_token, &request); - - match call_announce_procedure(pool, parameters).await { + match call_announce_procedure(pool, source_addr, user_agent, user_token, &request).await { Ok(results) => { if results.announce_allowed { Ok((ValidatedAnnounceRequest(request), results.warning_message)) @@ -90,9 +49,13 @@ pub async fn validate_announce_request( async fn call_announce_procedure( pool: &Pool, - parameters: AnnounceProcedureParameters, + source_addr: CanonicalSocketAddr, + user_agent: Option, + user_token: String, // FIXME: length + request: &AnnounceRequest, ) -> anyhow::Result { - let source_ip_bytes: Vec = match parameters.source_ip { + let source_addr = source_addr.get(); + let source_ip_bytes: Vec = match source_addr.ip() { IpAddr::V4(ip) => ip.octets().into(), IpAddr::V6(ip) => ip.octets().into(), }; @@ -123,15 +86,15 @@ async fn call_announce_procedure( ", ) .bind(source_ip_bytes) - .bind(parameters.source_port) - .bind(parameters.user_agent) - .bind(parameters.user_token) - .bind(parameters.info_hash) - .bind(¶meters.peer_id.0[..]) - .bind(parameters.event.as_str()) - .bind(parameters.uploaded) - .bind(parameters.downloaded) - .bind(parameters.left); + .bind(source_addr.port()) + .bind(user_agent) + .bind(user_token) + .bind(hex::encode(request.info_hash.0)) + .bind(&request.peer_id.0[..]) + .bind(request.event.as_str()) + .bind(request.bytes_uploaded as u64) + .bind(request.bytes_downloaded as u64) + .bind(request.bytes_left as u64); t.execute(q).await?;