Skip to content

Commit f28412a

Browse files
committed
Refactored
1 parent 65bca2f commit f28412a

File tree

4 files changed

+76
-67
lines changed

4 files changed

+76
-67
lines changed

router/src/handlers.rs

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
use std::{fs::OpenOptions, io::Write};
2+
3+
use crate::request::Request;
4+
5+
pub trait RouteHandler {
6+
fn handle(&self, request: &Request) -> anyhow::Result<()>;
7+
}
8+
9+
pub struct FileStorageHandler {
10+
pub file_name: String,
11+
}
12+
13+
impl RouteHandler for FileStorageHandler {
14+
fn handle(&self, request: &Request) -> anyhow::Result<()> {
15+
let mut file = OpenOptions::new()
16+
.append(true)
17+
.create(true)
18+
.open(self.file_name.clone())?;
19+
file.write_all(&request.data)?;
20+
Ok(())
21+
}
22+
}
23+
24+
pub struct PassToRemoteHandler {
25+
pub target_uri: String,
26+
}
27+
28+
impl RouteHandler for PassToRemoteHandler {
29+
fn handle(&self, request: &Request) -> anyhow::Result<()> {
30+
println!(
31+
"Pretending to POST to {}{} with {} bytes",
32+
self.target_uri,
33+
request.path,
34+
request.data.len()
35+
);
36+
37+
Ok(())
38+
}
39+
}

router/src/main.rs

+8-67
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1-
use std::{fs::OpenOptions, io::Write};
1+
mod handlers;
2+
mod request;
3+
mod router;
4+
5+
use handlers::*;
6+
use request::Request;
7+
use router::Router;
28

39
fn main() -> anyhow::Result<()> {
410
// File Storage kullanımı
511

612
let fs_handler = Box::new(FileStorageHandler {
7-
base_path: ".".into(),
13+
file_name: "route_datas.log".into(),
814
});
915

1016
let mut router = Router::new(fs_handler);
@@ -29,68 +35,3 @@ fn main() -> anyhow::Result<()> {
2935

3036
Ok(())
3137
}
32-
33-
pub struct Request {
34-
pub path: String,
35-
pub data: Vec<u8>,
36-
}
37-
38-
pub trait RouteHandler {
39-
fn handle(&self, request: &Request) -> anyhow::Result<()>;
40-
}
41-
42-
pub struct FileStorageHandler {
43-
pub base_path: String,
44-
}
45-
46-
impl RouteHandler for FileStorageHandler {
47-
fn handle(&self, request: &Request) -> anyhow::Result<()> {
48-
let mut file = OpenOptions::new()
49-
.append(true)
50-
.create(true)
51-
.open("request_logs.dat")?;
52-
file.write_all(&request.data)?;
53-
Ok(())
54-
}
55-
}
56-
57-
pub struct PassToRemoteHandler {
58-
pub target_uri: String,
59-
}
60-
61-
impl RouteHandler for PassToRemoteHandler {
62-
fn handle(&self, request: &Request) -> anyhow::Result<()> {
63-
println!(
64-
"Pretending to POST to {}{} with {} bytes",
65-
self.target_uri,
66-
request.path,
67-
request.data.len()
68-
);
69-
70-
Ok(())
71-
}
72-
}
73-
74-
pub struct Router {
75-
requests: Vec<Request>,
76-
handler: Box<dyn RouteHandler>,
77-
}
78-
79-
impl Router {
80-
pub fn new(handler: Box<dyn RouteHandler>) -> Self {
81-
Router {
82-
requests: Vec::new(),
83-
handler,
84-
}
85-
}
86-
pub fn add(&mut self, request: Request) {
87-
self.requests.push(request);
88-
}
89-
90-
pub fn apply(&self) -> anyhow::Result<()> {
91-
for r in self.requests.iter() {
92-
self.handler.handle(&r)?;
93-
}
94-
Ok(())
95-
}
96-
}

router/src/request.rs

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
pub struct Request {
2+
pub path: String,
3+
pub data: Vec<u8>,
4+
}

router/src/router.rs

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use crate::{handlers::RouteHandler, request::Request};
2+
3+
pub struct Router {
4+
requests: Vec<Request>,
5+
pub handler: Box<dyn RouteHandler>,
6+
}
7+
8+
impl Router {
9+
pub fn new(handler: Box<dyn RouteHandler>) -> Self {
10+
Router {
11+
requests: Vec::new(),
12+
handler,
13+
}
14+
}
15+
pub fn add(&mut self, request: Request) {
16+
self.requests.push(request);
17+
}
18+
19+
pub fn apply(&self) -> anyhow::Result<()> {
20+
for r in self.requests.iter() {
21+
self.handler.handle(r)?;
22+
}
23+
Ok(())
24+
}
25+
}

0 commit comments

Comments
 (0)