use hex::decode;
use packet_parser::PacketFlow;
use packet_parser::parse::application::protocols::postgresql::PostgreSqlPacket;
use std::convert::TryFrom;
fn main() {
println!("=======================================================");
println!("🧪 ENVIRONNEMENT DE TEST PostgreSQL (PARSER & ERRORS)");
println!("=======================================================\n");
println!("--- 1. Test Intégration complète (Couche 2 à Couche 7) ---");
let full_pgsql_hex = "00106f1803fa00106f1ae4420800450000a2bd4c4000400670d1ac135a0aac135a07d92515389676eac995d00f45801803eab49200000101080a005a2f9c005a28f55000000051005345542053455353494f4e20434841524143544552495354494353204153205452414e53414354494f4e2049534f4c4154494f4e204c4556454c205245414420434f4d4d4954544544000000420000000c0000000000000000450000000900000000015300000004";
let full_packet = decode(full_pgsql_hex).expect("Failed to decode hex");
match PacketFlow::try_from(full_packet.as_slice()) {
Ok(flow) => {
println!("✅ Packet parsé");
if let Some(transport) = &flow.transport {
if let Some(payload) = transport.payload {
match PostgreSqlPacket::try_from(payload) {
Ok(pg) => {
println!("{:#?}", pg);
for (i, msg) in pg.messages.iter().enumerate() {
println!("--------------------------------");
println!("Message {}", i);
println!("Type : {:?}", msg.message_type);
println!("Length : {}", msg.length);
println!("Body : {:#?}", msg.body);
}
}
Err(e) => {
println!("Erreur PostgreSQL : {:?}", e);
}
}
}
}
}
Err(e) => println!("{:?}", e),
}
}