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 ;
2
8
3
9
fn main ( ) -> anyhow:: Result < ( ) > {
4
10
// File Storage kullanımı
5
11
6
12
let fs_handler = Box :: new ( FileStorageHandler {
7
- base_path : ". " . into ( ) ,
13
+ file_name : "route_datas.log " . into ( ) ,
8
14
} ) ;
9
15
10
16
let mut router = Router :: new ( fs_handler) ;
@@ -29,68 +35,3 @@ fn main() -> anyhow::Result<()> {
29
35
30
36
Ok ( ( ) )
31
37
}
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
- }
0 commit comments