Merge pull request #108 from 0xfnzero/codex/lunar-lander-integration

feat(swqos): default Lunar Lander to QUIC
This commit is contained in:
Wood
2026-07-12 18:17:11 +08:00
committed by GitHub
3 changed files with 39 additions and 8 deletions
+2 -2
View File
@@ -161,13 +161,13 @@ let swqos_configs: Vec<SwqosConfig> = vec![
// Astralane: 4th param = AstralaneTransport — Binary (default), Plain (/iris), or Quic
SwqosConfig::Astralane("your_astralane_api_key".to_string(), SwqosRegion::Frankfurt, None, None), // Binary HTTP /irisb
SwqosConfig::SpeedLanding("your api_token".to_string(), SwqosRegion::Frankfurt, None),
// Lunar Lander: 4th param None = binary HTTP; Some(SwqosTransport::Quic) = QUIC
// Lunar Lander: 4th param None = QUIC (default); Some(SwqosTransport::Http) = binary HTTP
SwqosConfig::LunarLander("your_hellomoon_api_key".to_string(), SwqosRegion::Frankfurt, None, None),
SwqosConfig::LunarLander(
"your_hellomoon_api_key".to_string(),
SwqosRegion::Frankfurt,
None,
Some(SwqosTransport::Quic),
Some(SwqosTransport::Http),
),
];
// Create TradeConfig instance
+2 -2
View File
@@ -161,13 +161,13 @@ let swqos_configs: Vec<SwqosConfig> = vec![
// Astralane:第4个参数为 AstralaneTransport — Binary(默认)、Plain/iris)或 Quic
SwqosConfig::Astralane("your_astralane_api_key".to_string(), SwqosRegion::Frankfurt, None, None), // Binary /irisb
SwqosConfig::SpeedLanding("your api_token".to_string(), SwqosRegion::Frankfurt, None),
// Lunar Lander:第4个参数 None 为 binary HTTPSome(SwqosTransport::Quic) 为 QUIC
// Lunar Lander:第4个参数 None 为 QUIC(默认)Some(SwqosTransport::Http) 为 binary HTTP
SwqosConfig::LunarLander("your_hellomoon_api_key".to_string(), SwqosRegion::Frankfurt, None, None),
SwqosConfig::LunarLander(
"your_hellomoon_api_key".to_string(),
SwqosRegion::Frankfurt,
None,
Some(SwqosTransport::Quic),
Some(SwqosTransport::Http),
),
];
// 创建 TradeConfig 实例
+35 -4
View File
@@ -277,8 +277,8 @@ pub enum SwqosConfig {
Helius(String, SwqosRegion, Option<String>, Option<bool>),
/// Solami(api_key, region, custom_url)
Solami(String, SwqosRegion, Option<String>),
/// Lunar Lander (HelloMoon): binary tx via HTTP POST /send-bin or QUIC (port 16888).
/// (api_key, region, custom_url, transport). transport=None => HTTP; Some(Quic) => QUIC.
/// Lunar Lander (HelloMoon): binary tx via QUIC (port 16888) or HTTP POST /send-bin.
/// (api_key, region, custom_url, transport). transport=None => QUIC; Some(Http) => HTTP.
/// Minimum tip: 0.001 SOL. Apply for API key: https://docs.hellomoon.io/reference/lunar-lander
LunarLander(String, SwqosRegion, Option<String>, Option<SwqosTransport>),
}
@@ -367,7 +367,7 @@ impl SwqosConfig {
}
}
SwqosType::LunarLander => {
let use_quic = transport.map_or(false, |t| t == SwqosTransport::Quic);
let use_quic = transport.unwrap_or(SwqosTransport::Quic) == SwqosTransport::Quic;
if use_quic {
SWQOS_ENDPOINTS_LUNARLANDER_QUIC[region as usize].to_string()
} else {
@@ -548,7 +548,7 @@ impl SwqosConfig {
Ok(Arc::new(solami_client))
}
SwqosConfig::LunarLander(api_key, region, url, transport) => {
let use_quic = transport.map_or(false, |t| t == SwqosTransport::Quic);
let use_quic = transport.unwrap_or(SwqosTransport::Quic) == SwqosTransport::Quic;
if use_quic {
let quic_endpoint = url.unwrap_or_else(|| {
SWQOS_ENDPOINTS_LUNARLANDER_QUIC[region as usize].to_string()
@@ -576,3 +576,34 @@ impl SwqosConfig {
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn lunarlander_defaults_to_quic_endpoint() {
let endpoint = SwqosConfig::get_endpoint_with_transport(
SwqosType::LunarLander,
SwqosRegion::Frankfurt,
None,
None,
false,
);
assert_eq!(endpoint, SWQOS_ENDPOINTS_LUNARLANDER_QUIC[SwqosRegion::Frankfurt as usize]);
}
#[test]
fn lunarlander_http_transport_uses_binary_http_endpoint() {
let endpoint = SwqosConfig::get_endpoint_with_transport(
SwqosType::LunarLander,
SwqosRegion::Frankfurt,
None,
Some(SwqosTransport::Http),
false,
);
assert_eq!(endpoint, SWQOS_ENDPOINTS_LUNARLANDER[SwqosRegion::Frankfurt as usize]);
}
}