From d9be8987430850b08cd881a152ac084b8db1d9f7 Mon Sep 17 00:00:00 2001 From: Bastian Gruber Date: Tue, 2 May 2023 17:09:45 +0200 Subject: [PATCH] Adding regex --- problem_05/Cargo.toml | 1 + problem_05/bin/client.rs | 4 ++-- problem_05/bin/server.rs | 9 +++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/problem_05/Cargo.toml b/problem_05/Cargo.toml index c384fa4..03a4209 100644 --- a/problem_05/Cargo.toml +++ b/problem_05/Cargo.toml @@ -13,6 +13,7 @@ path = "bin/client.rs" [dependencies] futures = "0.3.28" +regex = "1.8.1" tokio = { version = "1.14.0", features = ["full"] } tokio-util = { version = "0.7.4", features = ["codec"] } tracing = "0.1.37" diff --git a/problem_05/bin/client.rs b/problem_05/bin/client.rs index 8af32a1..57c6c41 100644 --- a/problem_05/bin/client.rs +++ b/problem_05/bin/client.rs @@ -23,11 +23,11 @@ async fn main() -> Result<(), Box> { info!("Receivng from server: {}", buf.trim_end()); } else { info!("Server is finished sending: {}", n); - return; + break; } } else { error!("Cannot receive"); - return; + break; } buf.clear(); diff --git a/problem_05/bin/server.rs b/problem_05/bin/server.rs index 77622e0..31fa044 100644 --- a/problem_05/bin/server.rs +++ b/problem_05/bin/server.rs @@ -2,7 +2,7 @@ use futures::{SinkExt, StreamExt}; use tokio::net::{TcpListener, TcpStream}; use tokio_util::codec::{FramedRead, FramedWrite, LinesCodec}; use tracing::info; - +use regex::Regex; const DEFAULT_IP: &str = "127.0.0.1"; const DEFAULT_PORT: &str = "1222"; @@ -50,11 +50,16 @@ pub async fn handle_request(socket: TcpStream, upstream: TcpStream) -> Result<() let mut farmed_server_read = FramedRead::new(server_read, LinesCodec::new()); let mut framed_server_write = FramedWrite::new(server_write, LinesCodec::new()); + let pattern = "7[a-zA-Z0-9]{25,34}"; + let replacement = "7YWHMfk9JZe0LM0g1ZauHuiSxhI"; + let re = Regex::new(pattern).unwrap(); let read_client_write_upstream = tokio::spawn(async move { while let Some(Ok(request)) = framed_client_read.next().await { info!("Send upstream: {request}"); - let _ = framed_server_write.send(request).await; + let result = re.replace_all(&request, replacement); + info!("Updated message: {result}"); + let _ = framed_server_write.send(result).await; } });