mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
http_private: remove AnnounceProcedureParameters struct
This commit is contained in:
parent
6eb1375e4e
commit
b604bd4b0a
1 changed files with 17 additions and 54 deletions
|
|
@ -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<AnnounceRequest> for ValidatedAnnounceRequest {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct AnnounceProcedureParameters {
|
||||
source_ip: IpAddr,
|
||||
source_port: u16,
|
||||
user_agent: Option<String>,
|
||||
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<String>,
|
||||
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<String>), 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<MySql>,
|
||||
parameters: AnnounceProcedureParameters,
|
||||
source_addr: CanonicalSocketAddr,
|
||||
user_agent: Option<String>,
|
||||
user_token: String, // FIXME: length
|
||||
request: &AnnounceRequest,
|
||||
) -> anyhow::Result<AnnounceProcedureResults> {
|
||||
let source_ip_bytes: Vec<u8> = match parameters.source_ip {
|
||||
let source_addr = source_addr.get();
|
||||
let source_ip_bytes: Vec<u8> = 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?;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue