mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
Fix admin pool sorting and OAuth refresh
This commit is contained in:
@@ -7,6 +7,7 @@ use aether_data_contracts::repository::provider_catalog::{
|
||||
use serde_json::Value;
|
||||
use tracing::{info, warn};
|
||||
|
||||
use crate::admin_api::provider_oauth_maintenance_endpoint_for_provider;
|
||||
use crate::provider_key_auth::provider_key_is_oauth_managed;
|
||||
use crate::{AppState, GatewayError};
|
||||
|
||||
@@ -75,9 +76,10 @@ pub(crate) async fn perform_oauth_token_refresh_once(
|
||||
}
|
||||
summary.eligible = summary.eligible.saturating_add(1);
|
||||
|
||||
let Some(endpoint) =
|
||||
oauth_runtime_endpoint_for_provider(&provider.provider_type, provider_endpoints)
|
||||
else {
|
||||
let Some(endpoint) = provider_oauth_maintenance_endpoint_for_provider(
|
||||
&provider.provider_type,
|
||||
provider_endpoints,
|
||||
) else {
|
||||
summary.skipped = summary.skipped.saturating_add(1);
|
||||
continue;
|
||||
};
|
||||
@@ -182,62 +184,6 @@ fn oauth_refresh_candidate(
|
||||
&& provider_key_is_oauth_managed(key, provider.provider_type.as_str())
|
||||
}
|
||||
|
||||
fn oauth_runtime_endpoint_for_provider(
|
||||
provider_type: &str,
|
||||
endpoints: &[StoredProviderCatalogEndpoint],
|
||||
) -> Option<StoredProviderCatalogEndpoint> {
|
||||
let provider_type = provider_type.trim().to_ascii_lowercase();
|
||||
match provider_type.as_str() {
|
||||
"codex" => endpoints
|
||||
.iter()
|
||||
.find(|endpoint| {
|
||||
endpoint.is_active
|
||||
&& crate::ai_serving::is_openai_responses_format(&endpoint.api_format)
|
||||
})
|
||||
.cloned(),
|
||||
"chatgpt_web" => endpoints
|
||||
.iter()
|
||||
.find(|endpoint| {
|
||||
endpoint.is_active
|
||||
&& endpoint
|
||||
.api_format
|
||||
.trim()
|
||||
.eq_ignore_ascii_case("openai:image")
|
||||
})
|
||||
.cloned(),
|
||||
"antigravity" => endpoints
|
||||
.iter()
|
||||
.find(|endpoint| {
|
||||
endpoint.is_active
|
||||
&& endpoint
|
||||
.api_format
|
||||
.trim()
|
||||
.eq_ignore_ascii_case("gemini:generate_content")
|
||||
})
|
||||
.cloned(),
|
||||
"kiro" => endpoints
|
||||
.iter()
|
||||
.find(|endpoint| {
|
||||
endpoint.is_active
|
||||
&& endpoint
|
||||
.api_format
|
||||
.trim()
|
||||
.eq_ignore_ascii_case("claude:messages")
|
||||
})
|
||||
.cloned()
|
||||
.or_else(|| {
|
||||
endpoints
|
||||
.iter()
|
||||
.find(|endpoint| endpoint.is_active)
|
||||
.cloned()
|
||||
}),
|
||||
_ => endpoints
|
||||
.iter()
|
||||
.find(|endpoint| endpoint.is_active)
|
||||
.cloned(),
|
||||
}
|
||||
}
|
||||
|
||||
async fn provider_key_credentials_changed(
|
||||
state: &AppState,
|
||||
before: &StoredProviderCatalogKey,
|
||||
|
||||
@@ -15,7 +15,7 @@ use serde_json::Value;
|
||||
use tracing::{debug, info, warn};
|
||||
|
||||
use crate::admin_api::{
|
||||
admin_provider_pool_config, provider_oauth_runtime_endpoint_for_provider,
|
||||
admin_provider_pool_config, provider_oauth_maintenance_endpoint_for_provider,
|
||||
provider_type_supports_quota_refresh, reconcile_admin_fixed_provider_template_endpoints,
|
||||
refresh_antigravity_provider_quota_locally, refresh_chatgpt_web_provider_quota_locally,
|
||||
refresh_codex_provider_quota_locally, refresh_kiro_provider_quota_locally, AdminAppState,
|
||||
@@ -421,7 +421,7 @@ fn endpoint_for_probe(
|
||||
provider_type: &str,
|
||||
endpoints: &[StoredProviderCatalogEndpoint],
|
||||
) -> Option<StoredProviderCatalogEndpoint> {
|
||||
provider_oauth_runtime_endpoint_for_provider(provider_type, endpoints)
|
||||
provider_oauth_maintenance_endpoint_for_provider(provider_type, endpoints)
|
||||
}
|
||||
|
||||
async fn endpoint_for_probe_with_reconcile(
|
||||
|
||||
Reference in New Issue
Block a user