11use std:: net:: SocketAddr ;
22
33use aquatic_udp_protocol:: { Port , TransactionId } ;
4- use colored:: Colorize ;
54use hex_literal:: hex;
65use log:: debug;
76use torrust_tracker_primitives:: info_hash:: InfoHash ;
87
9- use crate :: console:: clients:: checker:: console:: Console ;
10- use crate :: console:: clients:: checker:: printer:: Printer ;
118use crate :: console:: clients:: checker:: service:: { CheckError , CheckResult } ;
129use crate :: console:: clients:: udp:: checker;
1310
11+ use crate :: console:: clients:: checker:: checks:: structs:: { CheckerOutput , Status } ;
12+
1413const ASSIGNED_BY_OS : u16 = 0 ;
1514const RANDOM_TRANSACTION_ID : i32 = -888_840_697 ;
1615
17- pub async fn run ( udp_trackers : & Vec < SocketAddr > , console : & Console , check_results : & mut Vec < CheckResult > ) {
18- console. println ( "UDP trackers ..." ) ;
16+ #[ allow( clippy:: missing_panics_doc) ]
17+ pub async fn run ( udp_trackers : & Vec < SocketAddr > , check_results : & mut Vec < CheckResult > ) -> Vec < CheckerOutput > {
18+ let mut udp_checkers: Vec < CheckerOutput > = Vec :: new ( ) ;
1919
2020 for udp_tracker in udp_trackers {
21- debug ! ( "UDP tracker: {:?}" , udp_tracker) ;
21+ let mut checker_output = CheckerOutput {
22+ url : udp_tracker. to_string ( ) ,
23+ status : Status {
24+ code : String :: new ( ) ,
25+ message : String :: new ( ) ,
26+ } ,
27+ } ;
2228
23- let colored_tracker_url = udp_tracker. to_string ( ) . yellow ( ) ;
29+ debug ! ( "UDP tracker: {:?}" , udp_tracker) ;
2430
2531 let transaction_id = TransactionId ( RANDOM_TRANSACTION_ID ) ;
2632
@@ -32,7 +38,8 @@ pub async fn run(udp_trackers: &Vec<SocketAddr>, console: &Console, check_result
3238 check_results. push ( Err ( CheckError :: UdpError {
3339 socket_addr : * udp_tracker,
3440 } ) ) ;
35- console. println ( & format ! ( "{} - Can't connect to socket {}" , "✗" . red( ) , colored_tracker_url) ) ;
41+ checker_output. status . code = "error" . to_string ( ) ;
42+ checker_output. status . message = "Can't connect to socket." . to_string ( ) ;
3643 break ;
3744 } ;
3845
@@ -42,11 +49,8 @@ pub async fn run(udp_trackers: &Vec<SocketAddr>, console: &Console, check_result
4249 check_results. push ( Err ( CheckError :: UdpError {
4350 socket_addr : * udp_tracker,
4451 } ) ) ;
45- console. println ( & format ! (
46- "{} - Can't make tracker connection request to {}" ,
47- "✗" . red( ) ,
48- colored_tracker_url
49- ) ) ;
52+ checker_output. status . code = "error" . to_string ( ) ;
53+ checker_output. status . message = "Can't make tracker connection request." . to_string ( ) ;
5054 break ;
5155 } ;
5256
@@ -60,13 +64,14 @@ pub async fn run(udp_trackers: &Vec<SocketAddr>, console: &Console, check_result
6064 . is_ok ( )
6165 {
6266 check_results. push ( Ok ( ( ) ) ) ;
63- console . println ( & format ! ( "{} - Announce at {} is OK" , "✓" . green ( ) , colored_tracker_url ) ) ;
67+ checker_output . status . code = "ok" . to_string ( ) ;
6468 } else {
6569 let err = CheckError :: UdpError {
6670 socket_addr : * udp_tracker,
6771 } ;
6872 check_results. push ( Err ( err) ) ;
69- console. println ( & format ! ( "{} - Announce at {} is failing" , "✗" . red( ) , colored_tracker_url) ) ;
73+ checker_output. status . code = "error" . to_string ( ) ;
74+ checker_output. status . message = "Announce is failing." . to_string ( ) ;
7075 }
7176
7277 debug ! ( "Send scrape request" ) ;
@@ -75,13 +80,16 @@ pub async fn run(udp_trackers: &Vec<SocketAddr>, console: &Console, check_result
7580
7681 if ( client. send_scrape_request ( connection_id, transaction_id, info_hashes) . await ) . is_ok ( ) {
7782 check_results. push ( Ok ( ( ) ) ) ;
78- console . println ( & format ! ( "{} - Announce at {} is OK" , "✓" . green ( ) , colored_tracker_url ) ) ;
83+ checker_output . status . code = "ok" . to_string ( ) ;
7984 } else {
8085 let err = CheckError :: UdpError {
8186 socket_addr : * udp_tracker,
8287 } ;
8388 check_results. push ( Err ( err) ) ;
84- console. println ( & format ! ( "{} - Announce at {} is failing" , "✗" . red( ) , colored_tracker_url) ) ;
89+ checker_output. status . code = "error" . to_string ( ) ;
90+ checker_output. status . message = "Scrape is failing." . to_string ( ) ;
8591 }
92+ udp_checkers. push ( checker_output) ;
8693 }
94+ udp_checkers
8795}
0 commit comments