mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-08 10:27:46 +08:00
Improve gateway transport and usage runtime
This commit is contained in:
@@ -12,18 +12,43 @@ const DAILY_QUOTA_EPSILON_USD: f64 = 0.000_000_01;
|
||||
pub(crate) async fn resolve_wallet_auth_gate(
|
||||
state: &AppState,
|
||||
auth_snapshot: &GatewayAuthApiKeySnapshot,
|
||||
) -> Result<Option<WalletAccessDecision>, GatewayError> {
|
||||
resolve_wallet_auth_gate_with_cache(state, auth_snapshot, true).await
|
||||
}
|
||||
|
||||
pub(crate) async fn resolve_wallet_auth_gate_uncached(
|
||||
state: &AppState,
|
||||
auth_snapshot: &GatewayAuthApiKeySnapshot,
|
||||
) -> Result<Option<WalletAccessDecision>, GatewayError> {
|
||||
resolve_wallet_auth_gate_with_cache(state, auth_snapshot, false).await
|
||||
}
|
||||
|
||||
async fn resolve_wallet_auth_gate_with_cache(
|
||||
state: &AppState,
|
||||
auth_snapshot: &GatewayAuthApiKeySnapshot,
|
||||
use_cache: bool,
|
||||
) -> Result<Option<WalletAccessDecision>, GatewayError> {
|
||||
if !state.has_wallet_data_reader() {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
let wallet = state
|
||||
.read_wallet_snapshot_for_auth(
|
||||
&auth_snapshot.user_id,
|
||||
&auth_snapshot.api_key_id,
|
||||
auth_snapshot.api_key_is_standalone,
|
||||
)
|
||||
.await?;
|
||||
let wallet = if use_cache {
|
||||
state
|
||||
.read_wallet_snapshot_for_auth(
|
||||
&auth_snapshot.user_id,
|
||||
&auth_snapshot.api_key_id,
|
||||
auth_snapshot.api_key_is_standalone,
|
||||
)
|
||||
.await?
|
||||
} else {
|
||||
state
|
||||
.read_wallet_snapshot_for_auth_uncached(
|
||||
&auth_snapshot.user_id,
|
||||
&auth_snapshot.api_key_id,
|
||||
auth_snapshot.api_key_is_standalone,
|
||||
)
|
||||
.await?
|
||||
};
|
||||
|
||||
let decision = match wallet.as_ref() {
|
||||
Some(wallet) => map_wallet_snapshot(wallet).access_decision(false),
|
||||
|
||||
Reference in New Issue
Block a user