rama_http/layer/har/recorder/
mod.rs1use super::spec;
2use std::sync::Arc;
3
4mod fs;
5pub use fs::{FileRecorder, HarFilePath};
6use rama_core::extensions::Extensions;
7use rama_utils::str::arcstr::ArcStr;
8
9#[derive(Debug, Clone)]
10pub struct LogMetaInfo {
12 pub version: ArcStr,
14 pub creator: spec::Creator,
16 pub browser: Option<spec::Browser>,
18 pub comment: Option<ArcStr>,
20}
21
22pub trait Recorder: Send + Sync + 'static {
23 fn record(&self, entry: spec::Log) -> impl Future<Output = Option<Extensions>> + Send + '_;
24
25 fn stop_record(&self) -> impl Future<Output = ()> + Send;
28}
29
30impl<R: Recorder> Recorder for Arc<R> {
31 fn record(&self, log: spec::Log) -> impl Future<Output = Option<Extensions>> + Send + '_ {
32 (**self).record(log)
33 }
34
35 fn stop_record(&self) -> impl Future<Output = ()> + Send {
36 (**self).stop_record()
37 }
38}