-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge #183: Remove duplicate code from
announce
request handlers
7fcc19d refactor: remove unneeded method (Jose Celano) 3b20795 refactor: function does not need to be pub anymore (Jose Celano) cecbc17 refactor: extract duplicate code from announce request handlers (Jose Celano) 156ac4d refactor: clean announce request handlers (Jose Celano) 05ea741 refactor: move code from domain to delivery layer (Jose Celano) 4b8fbfb refactor: the tracker is responsible for assigning the IP to peers (Jose Celano) Pull request description: Before implementing the [new](#182) `announce` handler for the Axum HTTP tracker, I needed to clean up the current handlers (UDP and HTTP). The code was duplicated, and I did not want to add a third copy. I planned to do it after migrating to Axum, but I changed my mind. I think the migration to Axum is going to be easier after this refactor. Top commit has no ACKs. Tree-SHA512: 21ed9132f083058b8e789184a665ab86344688ca482411abf2193bbd6f04d3b3d03ba53300361a9b54444ae12b1d0c4df65272f5da45d48364f4a419a675b007
- Loading branch information
Showing
10 changed files
with
244 additions
and
354 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
use std::net::{IpAddr, SocketAddr}; | ||
|
||
use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes}; | ||
|
||
use super::request::Announce; | ||
use crate::protocol::clock::{Current, Time}; | ||
use crate::tracker::peer::Peer; | ||
|
||
#[must_use] | ||
pub fn from_request(announce_request: &Announce, peer_ip: &IpAddr) -> Peer { | ||
let event: AnnounceEvent = if let Some(event) = &announce_request.event { | ||
match event.as_ref() { | ||
"started" => AnnounceEvent::Started, | ||
"stopped" => AnnounceEvent::Stopped, | ||
"completed" => AnnounceEvent::Completed, | ||
_ => AnnounceEvent::None, | ||
} | ||
} else { | ||
AnnounceEvent::None | ||
}; | ||
|
||
#[allow(clippy::cast_possible_truncation)] | ||
Peer { | ||
peer_id: announce_request.peer_id, | ||
peer_addr: SocketAddr::new(*peer_ip, announce_request.port), | ||
updated: Current::now(), | ||
uploaded: NumberOfBytes(i128::from(announce_request.uploaded) as i64), | ||
downloaded: NumberOfBytes(i128::from(announce_request.downloaded) as i64), | ||
left: NumberOfBytes(i128::from(announce_request.left) as i64), | ||
event, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.