1#![allow(clippy::empty_line_after_doc_comments)]
10
11pub mod cassette;
13pub mod cookies;
14pub mod error;
15pub mod filters;
16pub mod hooks;
17pub mod matching;
18pub mod player;
19pub mod proxy;
20pub mod recorder;
21pub mod templates;
22pub mod test_helpers;
23pub mod tls;
24pub mod websocket;
25
26#[cfg(feature = "api")]
28pub mod api;
29
30#[cfg(feature = "hydra")]
32pub mod hydra;
33
34pub use error::{MatgtoError, Result};
36pub use filters::{FilterPresets, RecordingFilters};
37pub use hooks::{RecordHook, RecordHooks, ReplayHook, ReplayHooks};
38pub use matching::{
39 BodyMatchMode, CustomMatcher, MatchingStrategy, RequestSignature, UrlMatchMode,
40};
41pub use player::{LatencyMode, Player};
42pub use proxy::{MagnetoProxy, ProxyMode};
43pub use recorder::Recorder;
44pub use templates::TemplateEngine;
45pub use tls::CertificateAuthority;
46pub use websocket::{WebSocketInterceptor, WebSocketPlayer, WebSocketRecorder};
47
48pub use cassette::{Cassette, HttpRequest, HttpResponse, Interaction, WebSocketMessage};
50
51pub use cookies::{Cookie, CookieJar, SameSite};
53
54#[cfg(feature = "api")]
56pub use api::{
57 ApiConfig, ApiResponse, ApiServer, ProxyStatus, StartProxyRequest, StopProxyRequest,
58};
59
60#[cfg(feature = "hydra")]
62pub use hydra::{
63 ApiDocumentation, HydraClass, HydraCollection, HydraError, HydraLink, HydraOperation,
64 HydraProperty, HydraResponse, HydraSearch, HydraView, JsonLdContext, SupportedClass,
65 SupportedProperty,
66};
67
68pub fn create_proxy(cassette_dir: String) -> Option<std::sync::Arc<MagnetoProxy>> {
73 use proxy::MagnetoProxy;
74 let path: &std::path::Path = cassette_dir.as_ref();
75 MagnetoProxy::new_internal(path)
76 .ok()
77 .map(std::sync::Arc::new)
78}
79
80pub fn version() -> String {
82 env!("CARGO_PKG_VERSION").to_string()
83}
84
85uniffi::include_scaffolding!("magneto_serge");
87
88#[cfg(test)]
89mod tests {
90 #[test]
91 fn test_library_loads() {
92 assert!(!crate::version().is_empty());
94 }
95}