Refactored redundant publishing code
This commit is contained in:
53
src/main.rs
53
src/main.rs
@@ -5,6 +5,25 @@ use tokio::time::sleep;
|
||||
|
||||
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)]
|
||||
#[command(version, about, long_about = None)]
|
||||
struct Args {
|
||||
@@ -74,44 +93,14 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("Connected to MQTT broker");
|
||||
if data_published == false
|
||||
{
|
||||
client
|
||||
.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?;
|
||||
publish_departure_data(&client, &departure_data).await?;
|
||||
data_published = true;
|
||||
}
|
||||
}
|
||||
Ok(_) => {
|
||||
if data_published == false
|
||||
{
|
||||
client
|
||||
.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?;
|
||||
publish_departure_data(&client, &departure_data).await?;
|
||||
data_published = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user