convertor/error/
url_error.rs1use crate::config::client_config::{ParseClientError, ProxyClient};
2use crate::config::provider_config::Provider;
3use crate::error::{EncryptError, QueryError};
4use crate::url::convertor_url::ConvertorUrlType;
5use std::str::Utf8Error;
6use thiserror::Error;
7use url::Url;
8
9#[derive(Debug, Error)]
10pub enum UrlBuilderError {
11 #[error("无法获取 sub_host: {0}")]
12 NoSubHost(Url),
13
14 #[error("创建 UrlBuilder 时, 未找到配置供应商: {0}")]
15 ProviderNotFound(Provider),
16
17 #[error("创建 UrlBuilder 时, 未找到代理客户端配置: {0}")]
18 ClientNotFound(ProxyClient),
19
20 #[error("从 URL 中解析失败, 没有 query 参数: {0}")]
21 ParseFromUrlNoQuery(Url),
22
23 #[error("不支持将 {0} 构造为 SurgeHeader")]
24 UnsupportedUrlType(ConvertorUrlType),
25
26 #[error("无法加密/解密 raw_sub_url: {0}")]
27 EncryptError(#[from] EncryptError),
28
29 #[error(transparent)]
30 QueryError(#[from] QueryError),
31}
32
33#[derive(Debug, Error)]
34pub enum ParseUrlError {
35 #[error("无法从 URL 中解析 ConvertorUrl: 缺少查询参数: {0}")]
36 NotFoundParam(&'static str),
37
38 #[error("无法从 URL 中解析 ConvertorUrl: 没有查询字符串")]
39 UrlNoQuery(String),
40
41 #[error(transparent)]
42 ParseClientError(#[from] ParseClientError),
43
44 #[error(transparent)]
45 ParseServerError(#[from] url::ParseError),
46
47 #[error(transparent)]
48 ParseNumError(#[from] std::num::ParseIntError),
49
50 #[error(transparent)]
51 ParseBoolError(#[from] std::str::ParseBoolError),
52
53 #[error(transparent)]
54 Utf8Error(#[from] Utf8Error),
55}
56
57#[derive(Debug, Error)]
58pub enum EncodeUrlError {
59 #[error("构造 ${0} query 失败: 缺少必要参数 {1}")]
60 NotFoundParam(&'static str, &'static str),
61
62 #[error("无法提取 raw_sub_url 的主机和端口信息: {0}")]
63 NoRawSubHost(String),
64
65 #[error(transparent)]
66 UrlParseError(#[from] url::ParseError),
67}