0.7.56
This commit is contained in:
@@ -114,6 +114,24 @@ impl TradeAggregationService {
|
||||
continue;
|
||||
},
|
||||
};
|
||||
let payload_base_vault_address =
|
||||
crate::trade_aggregation::extract_payload_string_by_candidate_keys(
|
||||
&payload,
|
||||
&["baseVault", "base_vault", "baseVaultAddress", "base_vault_address"],
|
||||
);
|
||||
let payload_quote_vault_address =
|
||||
crate::trade_aggregation::extract_payload_string_by_candidate_keys(
|
||||
&payload,
|
||||
&["quoteVault", "quote_vault", "quoteVaultAddress", "quote_vault_address"],
|
||||
);
|
||||
let effective_base_vault_address = match base_vault_address.as_deref() {
|
||||
Some(base_vault_address) => Some(base_vault_address),
|
||||
None => payload_base_vault_address.as_deref(),
|
||||
};
|
||||
let effective_quote_vault_address = match quote_vault_address.as_deref() {
|
||||
Some(quote_vault_address) => Some(quote_vault_address),
|
||||
None => payload_quote_vault_address.as_deref(),
|
||||
};
|
||||
if !crate::is_decoded_event_trade_candidate(decoded_event.event_kind.as_str(), &payload)
|
||||
{
|
||||
tracing::debug!(
|
||||
@@ -150,8 +168,8 @@ impl TradeAggregationService {
|
||||
quote_token_mint: quote_token_mint.as_deref(),
|
||||
base_token_decimals,
|
||||
quote_token_decimals,
|
||||
base_vault_address: base_vault_address.as_deref(),
|
||||
quote_vault_address: quote_vault_address.as_deref(),
|
||||
base_vault_address: effective_base_vault_address,
|
||||
quote_vault_address: effective_quote_vault_address,
|
||||
};
|
||||
let amount_resolution =
|
||||
crate::trade_amount_resolution::resolve_trade_amounts(&amount_input).await;
|
||||
@@ -212,6 +230,29 @@ impl TradeAggregationService {
|
||||
}
|
||||
}
|
||||
|
||||
fn extract_payload_string_by_candidate_keys(
|
||||
payload: &serde_json::Value,
|
||||
keys: &[&str],
|
||||
) -> std::option::Option<std::string::String> {
|
||||
let object = match payload.as_object() {
|
||||
Some(object) => object,
|
||||
None => return None,
|
||||
};
|
||||
for key in keys {
|
||||
let value = object.get(*key);
|
||||
let value = match value {
|
||||
Some(value) => value,
|
||||
None => continue,
|
||||
};
|
||||
if let Some(text) = value.as_str() {
|
||||
if !text.trim().is_empty() {
|
||||
return Some(text.to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
return None;
|
||||
}
|
||||
|
||||
fn should_skip_pump_fun_duplicate_trade_event(
|
||||
decoded_event: &crate::DexDecodedEventDto,
|
||||
decoded_events: &[crate::DexDecodedEventDto],
|
||||
|
||||
Reference in New Issue
Block a user