mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-10 11:19:50 +08:00
feat: allow wallet fallback after plan quota exhaustion
This commit is contained in:
@@ -103,6 +103,7 @@ pub(crate) fn retain_first_byte_request_metadata(value: Option<Value>) -> Option
|
||||
| "client_requested_stream"
|
||||
| "upstream_is_stream"
|
||||
| "api_key_is_standalone"
|
||||
| "plan_wallet_fallback"
|
||||
| "plan_usage_reservation_token"
|
||||
| "request_path"
|
||||
| "request_query_string"
|
||||
|
||||
@@ -286,6 +286,15 @@ fn usage_api_key_is_standalone(usage: &StoredRequestUsageAudit) -> bool {
|
||||
}
|
||||
|
||||
fn usage_policy_reservation_token(usage: &StoredRequestUsageAudit) -> Option<&str> {
|
||||
if usage
|
||||
.request_metadata
|
||||
.as_ref()
|
||||
.and_then(|metadata| metadata.get("plan_wallet_fallback"))
|
||||
.and_then(serde_json::Value::as_bool)
|
||||
== Some(true)
|
||||
{
|
||||
return None;
|
||||
}
|
||||
usage
|
||||
.request_metadata
|
||||
.as_ref()
|
||||
@@ -296,6 +305,16 @@ fn usage_policy_reservation_token(usage: &StoredRequestUsageAudit) -> Option<&st
|
||||
}
|
||||
|
||||
fn event_usage_policy_reservation_token(event: &UsageEvent) -> Option<&str> {
|
||||
if event
|
||||
.data
|
||||
.request_metadata
|
||||
.as_ref()
|
||||
.and_then(|metadata| metadata.get("plan_wallet_fallback"))
|
||||
.and_then(serde_json::Value::as_bool)
|
||||
== Some(true)
|
||||
{
|
||||
return None;
|
||||
}
|
||||
event
|
||||
.data
|
||||
.request_metadata
|
||||
|
||||
@@ -2246,6 +2246,12 @@ fn build_runtime_request_metadata_seed_from_parts(
|
||||
Value::Bool(api_key_is_standalone),
|
||||
);
|
||||
}
|
||||
if let Some(wallet_fallback) = context_bool(context, "plan_wallet_fallback") {
|
||||
metadata.insert(
|
||||
"plan_wallet_fallback".to_string(),
|
||||
Value::Bool(wallet_fallback),
|
||||
);
|
||||
}
|
||||
if let Some(websocket_mode) = context_bool(context, WEBSOCKET_MODE_METADATA_KEY) {
|
||||
metadata.insert(
|
||||
WEBSOCKET_MODE_METADATA_KEY.to_string(),
|
||||
|
||||
Reference in New Issue
Block a user