Skip to content

Commit bcf84a2

Browse files
author
Devdutt Shenoi
committed
refactor: builder pattern
1 parent 4b6806a commit bcf84a2

File tree

3 files changed

+52
-46
lines changed

3 files changed

+52
-46
lines changed

src/audit.rs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -173,56 +173,64 @@ impl Default for AuditLogBuilder {
173173
}
174174

175175
impl AuditLogBuilder {
176-
pub fn set_stream_name(&mut self, stream: impl Into<String>) {
176+
pub fn set_stream_name(mut self, stream: impl Into<String>) -> Self {
177177
if AUDIT_LOGGER.is_none() {
178-
return;
178+
return self;
179179
}
180180
self.stream = stream.into();
181+
182+
self
181183
}
182184

183185
pub fn set_actor(
184-
&mut self,
186+
mut self,
185187
host: impl Into<String>,
186188
username: impl Into<String>,
187189
user_agent: impl Into<String>,
188190
auth_method: impl Into<String>,
189-
) {
191+
) -> Self {
190192
if AUDIT_LOGGER.is_none() {
191-
return;
193+
return self;
192194
}
193195
self.actor = Some(ActorLog {
194196
remote_host: host.into(),
195197
user_agent: user_agent.into(),
196198
username: username.into(),
197199
authorization_method: auth_method.into(),
198200
});
201+
202+
self
199203
}
200204

201205
pub fn set_request(
202-
&mut self,
206+
mut self,
203207
method: impl Into<String>,
204208
path: impl Into<String>,
205209
protocol: impl Into<String>,
206210
headers: impl IntoIterator<Item = (String, String)>,
207-
) {
211+
) -> Self {
208212
if AUDIT_LOGGER.is_none() {
209-
return;
213+
return self;
210214
}
211215
self.request = Some(RequestLog {
212216
method: method.into(),
213217
path: path.into(),
214218
protocol: protocol.into(),
215219
headers: headers.into_iter().collect(),
216220
});
221+
222+
self
217223
}
218224

219-
pub fn set_response(&mut self, status_code: u16, err: impl Display) {
225+
pub fn set_response(mut self, status_code: u16, err: impl Display) -> Self {
220226
if AUDIT_LOGGER.is_none() {
221-
return;
227+
return self;
222228
}
223229
let error = err.to_string();
224230
let error = error.is_empty().then_some(error);
225231
self.response = Some(ResponseLog { status_code, error });
232+
233+
self
226234
}
227235

228236
// NOTE: Ensure that the logger has been constructed by Default

src/handlers/http/audit.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ pub async fn audit_log_middleware(
4444
{
4545
let attribute_value: &str = kinesis_common_attributes.to_str().unwrap();
4646
let message: Message = serde_json::from_str(attribute_value).unwrap();
47-
log_builder.set_stream_name(message.common_attributes.x_p_stream);
47+
log_builder = log_builder.set_stream_name(message.common_attributes.x_p_stream);
4848
} else if let Some(stream) = req.match_info().get("logstream") {
49-
log_builder.set_stream_name(stream.to_owned());
49+
log_builder = log_builder.set_stream_name(stream.to_owned());
5050
} else if let Some(value) = req.headers().get(STREAM_NAME_HEADER_KEY) {
5151
if let Ok(stream) = value.to_str() {
52-
log_builder.set_stream_name(stream.to_owned());
52+
log_builder = log_builder.set_stream_name(stream.to_owned());
5353
}
5454
}
5555
let mut username = "Unknown".to_owned();
@@ -84,24 +84,24 @@ pub async fn audit_log_middleware(
8484
.ok()
8585
}
8686
});
87-
log_builder.set_request(
88-
req.method().as_str(),
89-
req.path(),
90-
req.connection_info().scheme(),
91-
headers,
92-
);
93-
94-
log_builder.set_actor(
95-
req.connection_info()
96-
.realip_remote_addr()
97-
.unwrap_or_default(),
98-
req.headers()
99-
.get("User-Agent")
100-
.and_then(|a| a.to_str().ok())
101-
.unwrap_or_default(),
102-
username,
103-
authorization_method,
104-
);
87+
log_builder = log_builder
88+
.set_request(
89+
req.method().as_str(),
90+
req.path(),
91+
req.connection_info().scheme(),
92+
headers,
93+
)
94+
.set_actor(
95+
req.connection_info()
96+
.realip_remote_addr()
97+
.unwrap_or_default(),
98+
req.headers()
99+
.get("User-Agent")
100+
.and_then(|a| a.to_str().ok())
101+
.unwrap_or_default(),
102+
username,
103+
authorization_method,
104+
);
105105

106106
let res = next.call(req).await;
107107

@@ -111,10 +111,10 @@ pub async fn audit_log_middleware(
111111
let status = res.status();
112112
// Use error information from reponse object if an error
113113
if let Some(err) = res.response().error() {
114-
log_builder.set_response(status.as_u16(), err);
114+
log_builder = log_builder.set_response(status.as_u16(), err);
115115
}
116116
}
117-
Err(err) => log_builder.set_response(500, err),
117+
Err(err) => log_builder = log_builder.set_response(500, err),
118118
}
119119

120120
log_builder.send().await;

src/kafka.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -276,23 +276,21 @@ pub async fn setup_integration() {
276276

277277
while let Ok(curr) = stream.next().await.unwrap() {
278278
// Constructs a log for each kafka request
279-
let mut log_builder = AuditLogBuilder::default();
280-
log_builder.set_actor(
281-
CONFIG.parseable.kafka_host.as_deref().unwrap_or(""),
282-
"Kafka Client",
283-
"",
284-
"",
285-
);
286-
287-
log_builder.set_request("", "", "Kafka", []);
288-
log_builder.set_stream_name(curr.topic());
279+
let log_builder = AuditLogBuilder::default()
280+
.set_actor(
281+
CONFIG.parseable.kafka_host.as_deref().unwrap_or(""),
282+
"Kafka Client",
283+
"",
284+
"",
285+
)
286+
.set_request("", "", "Kafka", [])
287+
.set_stream_name(curr.topic());
289288

290289
let Err(err) = ingest_message(curr).await else {
291-
log_builder.set_response(200, "");
290+
log_builder.set_response(200, "").send().await;
292291
continue;
293292
};
294-
log_builder.set_response(500, &err);
295293
error!("Unable to ingest incoming kafka message- {err}");
296-
log_builder.send().await;
294+
log_builder.set_response(500, &err).send().await;
297295
}
298296
}

0 commit comments

Comments
 (0)