refactor(proxy): remove unused request handlers and routes

- Remove unused GET/DELETE request forwarding methods
- Remove count_tokens, get/delete response handlers
- Simplify router by removing unused endpoints
- Keep only essential routes: /v1/messages, /v1/responses, /v1beta/*
This commit is contained in:
YoVinchen
2025-12-01 12:41:17 +08:00
parent 94b83bfa3a
commit 247973b37e
3 changed files with 1 additions and 335 deletions
-202
View File
@@ -462,205 +462,3 @@ enum AuthType {
Gemini,
Bearer,
}
impl RequestForwarder {
/// 转发 GET 请求(带重试和故障转移)
pub async fn forward_get_request(
&self,
app_type: &AppType,
endpoint: &str,
headers: axum::http::HeaderMap,
) -> Result<Response, ProxyError> {
let mut failed_ids = Vec::new();
for attempt in 0..self.max_retries {
let provider = self.router.select_provider(app_type, &failed_ids).await?;
log::debug!(
"GET 尝试 {} - 使用Provider: {} ({})",
attempt + 1,
provider.name,
provider.id
);
match self.forward_get(&provider, endpoint, &headers).await {
Ok(response) => {
self.router
.update_health(&provider, app_type, true, None)
.await;
return Ok(response);
}
Err(e) => {
let category = self.categorize_proxy_error(&e);
match category {
ErrorCategory::Retryable => {
self.router
.update_health(&provider, app_type, false, Some(e.to_string()))
.await;
failed_ids.push(provider.id.clone());
continue;
}
_ => return Err(e),
}
}
}
}
Err(ProxyError::MaxRetriesExceeded)
}
/// 转发 DELETE 请求(带重试和故障转移)
pub async fn forward_delete_request(
&self,
app_type: &AppType,
endpoint: &str,
headers: axum::http::HeaderMap,
) -> Result<Response, ProxyError> {
let mut failed_ids = Vec::new();
for attempt in 0..self.max_retries {
let provider = self.router.select_provider(app_type, &failed_ids).await?;
log::debug!(
"DELETE 尝试 {} - 使用Provider: {} ({})",
attempt + 1,
provider.name,
provider.id
);
match self.forward_delete(&provider, endpoint, &headers).await {
Ok(response) => {
self.router
.update_health(&provider, app_type, true, None)
.await;
return Ok(response);
}
Err(e) => {
let category = self.categorize_proxy_error(&e);
match category {
ErrorCategory::Retryable => {
self.router
.update_health(&provider, app_type, false, Some(e.to_string()))
.await;
failed_ids.push(provider.id.clone());
continue;
}
_ => return Err(e),
}
}
}
}
Err(ProxyError::MaxRetriesExceeded)
}
/// 转发单个 GET 请求
async fn forward_get(
&self,
provider: &Provider,
endpoint: &str,
headers: &axum::http::HeaderMap,
) -> Result<Response, ProxyError> {
let base_url = self.extract_base_url(provider)?;
let url = self.build_full_url(&base_url, endpoint);
log::info!("Proxy GET Request URL: {url}");
let mut request = self.client.get(&url);
// 透传 Headers
for (key, value) in headers {
let key_str = key.as_str().to_lowercase();
if key_str == "host"
|| key_str == "content-length"
|| key_str == "accept-encoding"
|| key_str == "x-api-key"
|| key_str == "authorization"
|| key_str == "x-goog-api-key"
|| key_str == "anthropic-version"
{
continue;
}
request = request.header(key, value);
}
request = self.add_auth_headers(request, provider)?;
let response = request.send().await.map_err(|e| {
if e.is_timeout() {
ProxyError::Timeout(format!("请求超时: {e}"))
} else if e.is_connect() {
ProxyError::ForwardFailed(format!("连接失败: {e}"))
} else {
ProxyError::ForwardFailed(e.to_string())
}
})?;
let status = response.status();
if status.is_success() {
Ok(response)
} else {
let status_code = status.as_u16();
let body_text = response.text().await.ok();
Err(ProxyError::UpstreamError {
status: status_code,
body: body_text,
})
}
}
/// 转发单个 DELETE 请求
async fn forward_delete(
&self,
provider: &Provider,
endpoint: &str,
headers: &axum::http::HeaderMap,
) -> Result<Response, ProxyError> {
let base_url = self.extract_base_url(provider)?;
let url = self.build_full_url(&base_url, endpoint);
log::info!("Proxy DELETE Request URL: {url}");
let mut request = self.client.delete(&url);
// 透传 Headers
for (key, value) in headers {
let key_str = key.as_str().to_lowercase();
if key_str == "host"
|| key_str == "content-length"
|| key_str == "accept-encoding"
|| key_str == "x-api-key"
|| key_str == "authorization"
|| key_str == "x-goog-api-key"
|| key_str == "anthropic-version"
{
continue;
}
request = request.header(key, value);
}
request = self.add_auth_headers(request, provider)?;
let response = request.send().await.map_err(|e| {
if e.is_timeout() {
ProxyError::Timeout(format!("请求超时: {e}"))
} else if e.is_connect() {
ProxyError::ForwardFailed(format!("连接失败: {e}"))
} else {
ProxyError::ForwardFailed(e.to_string())
}
})?;
let status = response.status();
if status.is_success() {
Ok(response)
} else {
let status_code = status.as_u16();
let body_text = response.text().await.ok();
Err(ProxyError::UpstreamError {
status: status_code,
body: body_text,
})
}
}
}