1use crate::{AverDisplay, AverList, AverStr};
2
3#[derive(Clone, Debug, PartialEq, Eq, Hash, Ord, PartialOrd)]
4pub struct TerminalSize {
5 pub width: i64,
6 pub height: i64,
7}
8
9impl AverDisplay for TerminalSize {
10 fn aver_display(&self) -> String {
11 format!(
12 "Terminal.Size(width: {}, height: {})",
13 self.width.aver_display_inner(),
14 self.height.aver_display_inner()
15 )
16 }
17
18 fn aver_display_inner(&self) -> String {
19 self.aver_display()
20 }
21}
22
23#[derive(Clone, Debug, PartialEq, Eq, Hash, Ord, PartialOrd)]
24pub struct Header {
25 pub name: AverStr,
26 pub value: AverStr,
27}
28
29impl Header {
30 pub fn from_strings(name: String, value: String) -> Self {
32 Self {
33 name: AverStr::from(name),
34 value: AverStr::from(value),
35 }
36 }
37}
38
39impl AverDisplay for Header {
40 fn aver_display(&self) -> String {
41 format!(
42 "Header(name: {}, value: {})",
43 self.name.aver_display_inner(),
44 self.value.aver_display_inner()
45 )
46 }
47
48 fn aver_display_inner(&self) -> String {
49 self.aver_display()
50 }
51}
52
53#[derive(Clone, Debug, PartialEq)]
54pub struct HttpResponse {
55 pub status: i64,
56 pub body: AverStr,
57 pub headers: AverList<Header>,
58}
59
60impl AverDisplay for HttpResponse {
61 fn aver_display(&self) -> String {
62 format!(
63 "HttpResponse(status: {}, body: {}, headers: {})",
64 self.status.aver_display_inner(),
65 self.body.aver_display_inner(),
66 self.headers.aver_display_inner()
67 )
68 }
69
70 fn aver_display_inner(&self) -> String {
71 self.aver_display()
72 }
73}
74
75#[derive(Clone, Debug, PartialEq)]
76pub struct HttpRequest {
77 pub method: AverStr,
78 pub path: AverStr,
79 pub body: AverStr,
80 pub headers: AverList<Header>,
81}
82
83impl AverDisplay for HttpRequest {
84 fn aver_display(&self) -> String {
85 format!(
86 "HttpRequest(method: {}, path: {}, body: {}, headers: {})",
87 self.method.aver_display_inner(),
88 self.path.aver_display_inner(),
89 self.body.aver_display_inner(),
90 self.headers.aver_display_inner()
91 )
92 }
93
94 fn aver_display_inner(&self) -> String {
95 self.aver_display()
96 }
97}
98
99#[derive(Clone, Debug, PartialEq, Eq, Hash, Ord, PartialOrd)]
100pub struct TcpConnection {
101 pub id: AverStr,
102 pub host: AverStr,
103 pub port: i64,
104}
105
106impl TcpConnection {
107 pub fn from_parts(id: String, host: String, port: i64) -> Self {
108 Self {
109 id: AverStr::from(id),
110 host: AverStr::from(host),
111 port,
112 }
113 }
114}
115
116impl AverDisplay for TcpConnection {
117 fn aver_display(&self) -> String {
118 format!(
119 "Tcp.Connection(id: {}, host: {}, port: {})",
120 self.id.aver_display_inner(),
121 self.host.aver_display_inner(),
122 self.port.aver_display_inner()
123 )
124 }
125
126 fn aver_display_inner(&self) -> String {
127 self.aver_display()
128 }
129}