Skip to main content

xrat_sdk/
lib.rs

1//! Stable public facade over xrat's reusable proxy-management logic.
2//!
3//! This crate intentionally exposes a curated subset of the workspace: domain
4//! types, subscription/protocol parsing, engine config generation, and probing.
5//! Experimental application services require the `services` feature.
6//!
7//! ```
8//! use xrat_sdk::{config::parse_link, engines::xray::generate_runtime_config};
9//!
10//! let node = parse_link(
11//!     "vless://11111111-1111-1111-1111-111111111111@example.com:443#edge"
12//! )?.expect("supported link");
13//! let config = generate_runtime_config(&node, 1080, Some(8080))?;
14//! let json = serde_json::to_string_pretty(&config)?;
15//! assert!(json.contains("outbounds"));
16//! # Ok::<(), Box<dyn std::error::Error>>(())
17//! ```
18
19pub mod model {
20    pub use xrat_model::{Node, NodeDedupKey, Protocol};
21}
22
23pub mod config {
24    pub use xrat_config::{
25        ConfigParseError, ImportMode, ImportResult, SubscriptionMetadata, parse_import, parse_link,
26        parse_text,
27    };
28}
29
30pub mod engines;
31
32pub mod prober {
33    pub use xrat_prober::{
34        AcceptedHttpStatuses, DownloadResult, FailureKind, IcmpResult, ProbeEngineKind,
35        RealDelayResult, TcpResult, TestResult, UploadResult, download_speed_check, icmp_ping,
36        real_delay_check, tcp_check, upload_speed_check,
37    };
38}
39
40#[cfg(feature = "services")]
41pub mod services {
42    pub use xrat_app::app::read_models::{
43        ConfigDetail, ConfigSummary, EndpointLocation, LatestTestSummary,
44    };
45    pub use xrat_app::app::services::testing::TestRunRequest;
46    pub use xrat_app::app::services::{
47        AppServices, ConfigExportRequest, ConfigLifecycleService, ConfigListRequest,
48        ConfigListResult, ConfigService, DeleteOutcome, RestoreOutcome, ToggleOutcome,
49    };
50}