mod mode;
mod store;
mod stub_generator;
mod types;
pub use mode::ProxyMode;
pub use store::RecordingStore;
#[allow(unused_imports)]
pub use stub_generator::generate_stub;
pub use types::{RecordedResponse, RequestSignature};
use std::time::Instant;
pub fn record_with_timing<F, T>(store: &RecordingStore, signature: RequestSignature, f: F) -> T
where
F: FnOnce() -> (T, u16, Vec<(String, String)>, Vec<u8>),
{
let start = Instant::now();
let (result, status, headers, body) = f();
let latency_ms = start.elapsed().as_millis() as u64;
let response = RecordedResponse {
status,
headers,
body,
latency_ms: Some(latency_ms),
timestamp_secs: crate::util::unix_timestamp(),
};
store.record(signature, response);
result
}