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;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user