@@ -5,8 +5,9 @@ use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes};
55use axum:: extract:: State ;
66use axum:: response:: { IntoResponse , Response } ;
77use axum_client_ip:: SecureClientIp ;
8+ use log:: debug;
89
9- use crate :: http:: axum_implementation:: requests:: announce:: { Announce , ExtractAnnounceRequest } ;
10+ use crate :: http:: axum_implementation:: requests:: announce:: { Announce , Event , ExtractAnnounceRequest } ;
1011use crate :: http:: axum_implementation:: responses;
1112use crate :: protocol:: clock:: { Current , Time } ;
1213use crate :: tracker:: peer:: Peer ;
@@ -19,7 +20,7 @@ pub async fn handle(
1920 ExtractAnnounceRequest ( announce_request) : ExtractAnnounceRequest ,
2021 secure_ip : SecureClientIp ,
2122) -> Response {
22- // todo: compact response and optional params
23+ debug ! ( "http announce request: {:#?}" , announce_request ) ;
2324
2425 let info_hash = announce_request. info_hash ;
2526 let remote_client_ip = secure_ip. 0 ;
@@ -42,15 +43,24 @@ pub async fn handle(
4243
4344#[ must_use]
4445fn peer_from_request ( announce_request : & Announce , peer_ip : & IpAddr ) -> Peer {
45- #[ allow( clippy:: cast_possible_truncation) ]
4646 Peer {
4747 peer_id : announce_request. peer_id ,
4848 peer_addr : SocketAddr :: new ( * peer_ip, announce_request. port ) ,
4949 updated : Current :: now ( ) ,
50- // todo: optional parameters not included in the announce request yet
51- uploaded : NumberOfBytes ( i128:: from ( 0 ) as i64 ) ,
52- downloaded : NumberOfBytes ( i128:: from ( 0 ) as i64 ) ,
53- left : NumberOfBytes ( i128:: from ( 0 ) as i64 ) ,
54- event : AnnounceEvent :: None ,
50+ uploaded : NumberOfBytes ( announce_request. uploaded . unwrap_or ( 0 ) ) ,
51+ downloaded : NumberOfBytes ( announce_request. downloaded . unwrap_or ( 0 ) ) ,
52+ left : NumberOfBytes ( announce_request. left . unwrap_or ( 0 ) ) ,
53+ event : map_to_aquatic_event ( & announce_request. event ) ,
54+ }
55+ }
56+
57+ fn map_to_aquatic_event ( event : & Option < Event > ) -> AnnounceEvent {
58+ match event {
59+ Some ( event) => match & event {
60+ Event :: Started => aquatic_udp_protocol:: AnnounceEvent :: Started ,
61+ Event :: Stopped => aquatic_udp_protocol:: AnnounceEvent :: Stopped ,
62+ Event :: Completed => aquatic_udp_protocol:: AnnounceEvent :: Completed ,
63+ } ,
64+ None => aquatic_udp_protocol:: AnnounceEvent :: None ,
5565 }
5666}
0 commit comments