42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
use std::collections::BTreeMap;
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct RuntimeRequestContext {
|
|
pub request_id: String,
|
|
pub correlation_id: String,
|
|
}
|
|
|
|
impl RuntimeRequestContext {
|
|
pub fn new(request_id: impl Into<String>, correlation_id: impl Into<String>) -> Self {
|
|
Self {
|
|
request_id: request_id.into(),
|
|
correlation_id: correlation_id.into(),
|
|
}
|
|
}
|
|
|
|
pub fn from_request_id(request_id: impl Into<String>) -> Self {
|
|
let request_id = request_id.into();
|
|
Self::new(request_id.clone(), request_id)
|
|
}
|
|
|
|
pub fn outbound_headers(&self) -> BTreeMap<String, String> {
|
|
BTreeMap::from([
|
|
("x-request-id".to_owned(), self.request_id.clone()),
|
|
("x-correlation-id".to_owned(), self.correlation_id.clone()),
|
|
])
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::RuntimeRequestContext;
|
|
|
|
#[test]
|
|
fn uses_request_id_for_default_correlation_id() {
|
|
let context = RuntimeRequestContext::from_request_id("req_123");
|
|
|
|
assert_eq!(context.request_id, "req_123");
|
|
assert_eq!(context.correlation_id, "req_123");
|
|
}
|
|
}
|