Bump DSN lib version, cleanup output
This commit is contained in:
parent
dc4389de4c
commit
fb74c90a55
46
Cargo.lock
generated
46
Cargo.lock
generated
@ -753,7 +753,7 @@ dependencies = [
|
||||
"reqwest 0.12.15",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror 2.0.12",
|
||||
"thiserror 2.0.18",
|
||||
"url",
|
||||
]
|
||||
|
||||
@ -1102,7 +1102,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "fren"
|
||||
version = "2.8.0"
|
||||
version = "2.8.1"
|
||||
dependencies = [
|
||||
"axum 0.8.1",
|
||||
"base64 0.22.1",
|
||||
@ -1125,7 +1125,6 @@ dependencies = [
|
||||
"reqwest 0.12.15",
|
||||
"rust-dsn-parser",
|
||||
"serde",
|
||||
"serde-xml-rs",
|
||||
"serde_json",
|
||||
"sha3",
|
||||
"songbird",
|
||||
@ -1133,7 +1132,7 @@ dependencies = [
|
||||
"strum 0.27.2",
|
||||
"symphonia",
|
||||
"tera",
|
||||
"thiserror 2.0.12",
|
||||
"thiserror 2.0.18",
|
||||
"thousands",
|
||||
"tokio",
|
||||
"tonic",
|
||||
@ -2013,7 +2012,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-targets 0.52.6",
|
||||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2461,7 +2460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"thiserror 2.0.12",
|
||||
"thiserror 2.0.18",
|
||||
"ucd-trie",
|
||||
]
|
||||
|
||||
@ -2816,7 +2815,7 @@ dependencies = [
|
||||
"rustc-hash 2.1.1",
|
||||
"rustls 0.23.20",
|
||||
"socket2",
|
||||
"thiserror 2.0.12",
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
"tracing",
|
||||
]
|
||||
@ -2835,7 +2834,7 @@ dependencies = [
|
||||
"rustls 0.23.20",
|
||||
"rustls-pki-types",
|
||||
"slab",
|
||||
"thiserror 2.0.12",
|
||||
"thiserror 2.0.18",
|
||||
"tinyvec",
|
||||
"tracing",
|
||||
"web-time",
|
||||
@ -3154,10 +3153,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rust-dsn-parser"
|
||||
version = "0.3.0"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://git.ahines.net/joeyahines/_cargo-index.git"
|
||||
checksum = "d807c50dc3e665478a29740bf366bdb4b75c24062bb02a43a96780614f7b7e88"
|
||||
checksum = "af10324ae3be2ec3e6ae6584909d9a0ac01cdca566714550f679fa58343c28f6"
|
||||
dependencies = [
|
||||
"thiserror 2.0.18",
|
||||
"xml-rs",
|
||||
]
|
||||
|
||||
@ -3477,18 +3477,6 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde-xml-rs"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc2215ce3e6a77550b80a1c37251b7d294febaf42e36e21b7b411e0bf54d540d"
|
||||
dependencies = [
|
||||
"log",
|
||||
"serde",
|
||||
"thiserror 2.0.12",
|
||||
"xml",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_cow"
|
||||
version = "0.1.2"
|
||||
@ -4256,11 +4244,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "2.0.12"
|
||||
version = "2.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
|
||||
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
|
||||
dependencies = [
|
||||
"thiserror-impl 2.0.12",
|
||||
"thiserror-impl 2.0.18",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -4276,9 +4264,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "2.0.12"
|
||||
version = "2.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
|
||||
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -4776,7 +4764,7 @@ dependencies = [
|
||||
"rustls 0.23.20",
|
||||
"rustls-pki-types",
|
||||
"sha1",
|
||||
"thiserror 2.0.12",
|
||||
"thiserror 2.0.18",
|
||||
"url",
|
||||
"utf-8",
|
||||
]
|
||||
@ -5210,7 +5198,7 @@ version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||
dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "fren"
|
||||
version = "2.8.0"
|
||||
version = "2.8.1"
|
||||
edition = "2024"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
@ -37,8 +37,7 @@ strum = { version = "0.27.2", features = ["derive"] }
|
||||
thousands = "0.2.0"
|
||||
url = { version = "2.5.7", features = ["serde"] }
|
||||
convert_case = "0.10.0"
|
||||
rust-dsn-parser = { version = "0.3.0", registry = "ahines"}
|
||||
serde-xml-rs = "0.8.2"
|
||||
rust-dsn-parser = { version = "1.0.0", registry = "ahines"}
|
||||
|
||||
[dependencies.tokio]
|
||||
version = "1.35.1"
|
||||
|
||||
@ -1,188 +1,13 @@
|
||||
use crate::discord::Context;
|
||||
use crate::error::Error;
|
||||
use poise::serenity_prelude::MessageBuilder;
|
||||
use rust_dsn_parser::prelude::config::DsnConfig;
|
||||
use rust_dsn_parser::prelude::status::DsnStatus;
|
||||
use rust_dsn_parser::prelude::*;
|
||||
use std::collections::HashMap;
|
||||
use std::time::{SystemTime, UNIX_EPOCH};
|
||||
use structopt::lazy_static::lazy_static;
|
||||
use thousands::Separable;
|
||||
|
||||
lazy_static! {
|
||||
static ref NAME_MAP: HashMap<String, &'static str> = vec![
|
||||
("ace", "Advanced Composition Explorer"),
|
||||
("apm1", "Astrobotic Peregrine 1 Mission"),
|
||||
("agm1", "Astrobotic Griffin Lander"),
|
||||
("argo", "ArgoMoon"),
|
||||
("atot", "Advanced Tracking and Observational Techniques"),
|
||||
("bepi", "BepiColombo"),
|
||||
("bios", "BioSentinel"),
|
||||
("caps", "CAPSTONE"),
|
||||
("cas", "Cassini"),
|
||||
("cass", "Testing"),
|
||||
("ch1", "Chandrayaan"),
|
||||
("ch2", "Chandrayaan-2"),
|
||||
("ch2l", "Chandrayaan-2 Lander"),
|
||||
("ch2o", "Chandrayaan-2 Orbiter"),
|
||||
("ch3", "Chandrayaan-3"),
|
||||
("cgo", "Carruthers Geocorona Observatory"),
|
||||
("chdr", "Chandra"),
|
||||
("clu1", "Cluster 1"),
|
||||
("clu2", "Cluster 2"),
|
||||
("clu3", "Cluster 3"),
|
||||
("clu4", "Cluster 4"),
|
||||
("cue3", "CU Earth Escape Explorer"),
|
||||
("cusp", "CubeSat for Solar Particles"),
|
||||
("dart", "Double Asteroid Redirection Test"),
|
||||
("dawn", "Dawn"),
|
||||
("dif", "Deep Impact"),
|
||||
("dsco", "Deep Space Climate Observatory (DSCOVR)"),
|
||||
("dsn", "Testing"),
|
||||
("egs", "EVN and Global Services"),
|
||||
("em1", "Human Space Flight: Artemis I"),
|
||||
("em2", "Human Space Flight: Artemis II"),
|
||||
("em3", "Human Space Flight: Artemis III"),
|
||||
("emm", "Emirates Mars Mission (Hope)"),
|
||||
("em-1", "Exploration Mission-1"),
|
||||
("em-2", "Exploration Mission-2"),
|
||||
("em-3", "Exploration Mission-3"),
|
||||
("em-4", "Exploration Mission-4"),
|
||||
("em-5", "Exploration Mission-5"),
|
||||
("em-6", "Exploration Mission-6"),
|
||||
("em-7", "Exploration Mission-7"),
|
||||
("em-8", "Exploration Mission-8"),
|
||||
("em-9", "Exploration Mission-9"),
|
||||
("em-10", "Exploration Mission-10"),
|
||||
("equl", "EQUULEUS"),
|
||||
("escb", "ESCAPADE Blue"),
|
||||
("escg", "ESCAPADE Gold"),
|
||||
("eurc", "Europa Clipper"),
|
||||
("eus", "Exploration Upper Stage"),
|
||||
("gaia", "Gaia"),
|
||||
("gbra", "Ground Based Radio Astronomy"),
|
||||
("go10", "GOES 10"),
|
||||
("go11", "GOES 11"),
|
||||
("go12", "GOES 12"),
|
||||
("go13", "GOES 13"),
|
||||
("go14", "GOES 14"),
|
||||
("go15", "GOES 15"),
|
||||
("go16", "GOES 16"),
|
||||
("go17", "GOES 17"),
|
||||
("grla", "GRAIL A"),
|
||||
("grlb", "GRAIL B"),
|
||||
("gssr", "Goldstone Solar System Radar"),
|
||||
("gtl", "Geotail"),
|
||||
("gvrt", "Goldstone Apple Valley Radio Telescope"),
|
||||
("hcra", "Host Country Radio Astronomy"),
|
||||
("hmap", "LunaH-Map"),
|
||||
("hst", "Hubble Space Telescope"),
|
||||
("hyb2", "Hayabusa-2"),
|
||||
("ice", "ISEE-3 Reboot"),
|
||||
("icps", "Interim Cryogenic Propulsion Stage"),
|
||||
("imag", "IMAGE"),
|
||||
("imap", "IMAP"),
|
||||
("intg", "INTEGRAL"),
|
||||
("jno", "Juno"),
|
||||
("jnsa", "Janus A"),
|
||||
("jnsb", "Janus B"),
|
||||
("jwst", "James Webb Space Telescope"),
|
||||
("kepl", "Kepler"),
|
||||
("kplo", "Korea Pathfinder Lunar Orbiter"),
|
||||
("lade", "LADEE"),
|
||||
("ltb", "Lunar Trailblazer"),
|
||||
("lcro", "LCROSS"),
|
||||
("lfl", "Lunar Flashlight"),
|
||||
("lici", "LICIACube"),
|
||||
("lro", "Lunar Reconnaissance Orbiter"),
|
||||
("lnd1", "Lunar Node 1"),
|
||||
("ltst", "Interim Cryogenic Propulsion Stage"),
|
||||
("lucy", "Lucy"),
|
||||
("lunah-map", "Lunar Hydrogen MAPper"),
|
||||
("m01o", "Mars Odyssey"),
|
||||
("m01s", "Mars Odyssey"),
|
||||
("m20", "Mars 2020 (Perseverance)"),
|
||||
("map", "WMAP"),
|
||||
("mcoa", "MarCO A"),
|
||||
("mcob", "MarCO B"),
|
||||
("mer1", "Opportunity"),
|
||||
("mer2", "Spirit"),
|
||||
("mex", "Mars Express"),
|
||||
("mgs", "Mars Global Surveyor"),
|
||||
("mlic", "Lunar IceCube"),
|
||||
("mms1", "MMS 1"),
|
||||
("mms2", "MMS 2"),
|
||||
("mms3", "MMS 3"),
|
||||
("mms4", "MMS 4"),
|
||||
("mom", "Mars Orbiter Mission"),
|
||||
("mro", "Mars Reconnaissance Orbiter"),
|
||||
("mros", "Mars Reconnaissance Orbiter"),
|
||||
("msgr", "MESSENGER"),
|
||||
("msl", "Mars Science Laboratory (Curiosity)"),
|
||||
("musc", "Hayabusa"),
|
||||
("mvn", "MAVEN"),
|
||||
("neas", "Near Earth Asteroid Scout"),
|
||||
("nhpc", "New Horizons"),
|
||||
("no15", "NOAA 15"),
|
||||
("no16", "NOAA 16"),
|
||||
("no17", "NOAA 17"),
|
||||
("no18", "NOAA 18"),
|
||||
("nsyt", "InSight"),
|
||||
("olin", "SWARM-EX"),
|
||||
("omot", "OMOTENASHI"),
|
||||
("orx", "OSIRIS-REx"),
|
||||
("phx", "Phoenix"),
|
||||
("plc", "Akatsuki"),
|
||||
("polr", "POLAR"),
|
||||
("psyc", "Psyche"),
|
||||
("rd1", "Red Dragon 1"),
|
||||
("rfc", "Reference Frame Calibration"),
|
||||
("rose", "Rosetta"),
|
||||
("rp", "Resource Prospector"),
|
||||
("rsp", "ExoMars Rover and Surface Platform"),
|
||||
("rsts", "Resource System Time Sharing"),
|
||||
("sdu", "Stardust"),
|
||||
("sele", "Kaguya"),
|
||||
("sgp", "Space Geodesy Program"),
|
||||
("slim", "Smart Lander for Investigating Moon"),
|
||||
("soho", "SOHO"),
|
||||
("spil", "Beresheet"),
|
||||
("spp", "Parker Solar Probe"),
|
||||
("sta", "STEREO A"),
|
||||
("stab", "STEREO B"),
|
||||
("stb", "STEREO B"),
|
||||
("stf", "Spitzer Space Telescope"),
|
||||
("swfo", "Space Weather Follow On-Lagrange 1"),
|
||||
("td10", "TDRS 10"),
|
||||
("td11", "TDRS 11"),
|
||||
("td12", "TDRS 12"),
|
||||
("td13", "TDRS 13"),
|
||||
("tdr1", "TDRS 1"),
|
||||
("tdr3", "TDRS 3"),
|
||||
("tdr4", "TDRS 4"),
|
||||
("tdr5", "TDRS 5"),
|
||||
("tdr6", "TDRS 6"),
|
||||
("tdr7", "TDRS 7"),
|
||||
("tdr8", "TDRS 8"),
|
||||
("tdr9", "TDRS 9"),
|
||||
("terr", "TERRA"),
|
||||
("tess", "Transiting Exoplanet Survey Satellite"),
|
||||
("tgo", "Trace Gas Orbiter"),
|
||||
("thb", "THEMIS B"),
|
||||
("thc", "THEMIS C"),
|
||||
("tm", "Team Miles"),
|
||||
("tmm", "Team Miles"),
|
||||
("ulys", "Ulysses"),
|
||||
("vex", "Venus Express"),
|
||||
("vgr1", "Voyager 1"),
|
||||
("vgr2", "Voyager 2"),
|
||||
("vlbi", "V.L.B. Interferometry"),
|
||||
("wind", "WIND"),
|
||||
("xmm", "X-ray Multi-Mirror Mission (XMM-Newton)")
|
||||
]
|
||||
.into_iter()
|
||||
.map(|(name, fren_name)| (name.to_string(), fren_name))
|
||||
.collect();
|
||||
}
|
||||
|
||||
/// Check status of the NASA DSN
|
||||
#[poise::command(prefix_command, category = "Space")]
|
||||
pub async fn dsn(ctx: Context<'_>) -> Result<(), Error> {
|
||||
@ -206,20 +31,30 @@ pub async fn dsn(ctx: Context<'_>) -> Result<(), Error> {
|
||||
.text()
|
||||
.await?;
|
||||
|
||||
let dsn_stat = DsnStatus::from_xml_string(&resp)?;
|
||||
|
||||
let resp = client
|
||||
.get("https://eyes.nasa.gov/apps/dsn-now/config.xml")
|
||||
.send()
|
||||
.await?
|
||||
.text()
|
||||
.await?;
|
||||
|
||||
let dsn_config = DsnConfig::from_xml_string(&resp)?;
|
||||
|
||||
let mut msg_builder = MessageBuilder::new();
|
||||
|
||||
msg_builder.push_line("# NASA Deep Space Network Status");
|
||||
|
||||
let dsn_stat = DsnResponse::from_xml_string(&resp).unwrap();
|
||||
|
||||
for station in &dsn_stat.stations {
|
||||
msg_builder.push_bold_line(format!("{}:", station.friendly_name));
|
||||
|
||||
for dish in &station.dishes {
|
||||
if let Some(target) = dish.target.first() {
|
||||
let name = NAME_MAP
|
||||
if let Some(target) = dish.target.first()
|
||||
&& target.upleg_range != -1.0
|
||||
{
|
||||
let name = dsn_config
|
||||
.spacecraft_map
|
||||
.get(&target.name.to_lowercase())
|
||||
.map(|s| s.to_string())
|
||||
.map(|s| s.friendly_name.to_string())
|
||||
.unwrap_or(target.name.to_string());
|
||||
|
||||
let dish_line = format!(
|
||||
|
||||
@ -4,6 +4,7 @@ use crate::models::gogurt_reserves::GogurtError;
|
||||
use crate::models::improvements::ImprovementError;
|
||||
use crate::user;
|
||||
use magick_rust::MagickError;
|
||||
use rust_dsn_parser::DsnRespParseError;
|
||||
use serde::ser::StdError;
|
||||
use std::fmt::{Display, Formatter};
|
||||
|
||||
@ -30,6 +31,7 @@ pub enum Error {
|
||||
NoRandomFound,
|
||||
GogurtError(GogurtError),
|
||||
ImprovementError(ImprovementError),
|
||||
DsnError(DsnRespParseError),
|
||||
}
|
||||
|
||||
impl StdError for Error {}
|
||||
@ -112,6 +114,12 @@ impl From<ImprovementError> for Error {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<DsnRespParseError> for Error {
|
||||
fn from(value: DsnRespParseError) -> Self {
|
||||
Self::DsnError(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Error {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
@ -134,6 +142,7 @@ impl Display for Error {
|
||||
Error::NoRandomFound => write!(f, "No random found"),
|
||||
Error::GogurtError(err) => write!(f, "{err}"),
|
||||
Error::ImprovementError(err) => write!(f, "{err}"),
|
||||
Error::DsnError(err) => write!(f, "Error getting data from NASA: {err}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user