Skip to main content

convertor/error/
url_error.rs

1use 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}