Refactored redundant publishing code

This commit is contained in:
Ollo
2026-02-28 21:28:47 +01:00
parent cd5c0f8dd1
commit ef6f29cc00

View File

@@ -5,6 +5,25 @@ use tokio::time::sleep;
mod straba; mod straba;
async fn publish_departure_data(client: &AsyncClient, data: &straba::NextDeparture) -> Result<(), Box<dyn std::error::Error>> {
client
.publish("departure/station", QoS::AtLeastOnce, false, data.station_name.as_bytes())
.await?;
client
.publish("departure/outbound/station", QoS::AtLeastOnce, false, data.outbound_station.as_bytes())
.await?;
client
.publish("departure/outbound/diff", QoS::AtLeastOnce, false, format!("{}", data.outbound_diff).as_bytes())
.await?;
client
.publish("departure/inbound/station", QoS::AtLeastOnce, false, data.inbound_station.as_bytes())
.await?;
client
.publish("departure/inbound/diff", QoS::AtLeastOnce, false, format!("{}", data.inbound_diff).as_bytes())
.await?;
Ok(())
}
#[derive(Parser, Debug)] #[derive(Parser, Debug)]
#[command(version, about, long_about = None)] #[command(version, about, long_about = None)]
struct Args { struct Args {
@@ -74,44 +93,14 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Connected to MQTT broker"); println!("Connected to MQTT broker");
if data_published == false if data_published == false
{ {
client publish_departure_data(&client, &departure_data).await?;
.publish("departure/station", QoS::AtLeastOnce, false, departure_data.station_name.as_bytes())
.await?;
client
.publish("departure/outbound/station", QoS::AtLeastOnce, false, departure_data.outbound_station.as_bytes())
.await?;
client
.publish("departure/outbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.outbound_diff))
.await?;
client
.publish("departure/inbound/station", QoS::AtLeastOnce, false, departure_data.inbound_station.as_bytes())
.await?;
client
.publish("departure/inbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.inbound_diff))
.await?;
data_published = true; data_published = true;
} }
} }
Ok(_) => { Ok(_) => {
if data_published == false if data_published == false
{ {
client publish_departure_data(&client, &departure_data).await?;
.publish("departure/station", QoS::AtLeastOnce, false, departure_data.station_name.as_bytes())
.await?;
client
.publish("departure/outbound/station", QoS::AtLeastOnce, false, departure_data.outbound_station.as_bytes())
.await?;
client
.publish("departure/outbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.outbound_diff))
.await?;
client
.publish("departure/inbound/station", QoS::AtLeastOnce, false, departure_data.inbound_station.as_bytes())
.await?;
client
.publish("departure/inbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.inbound_diff))
.await?;
data_published = true; data_published = true;
} }
} }