From 787fd29df17306a57a4bb2fbe5fd95b935df918e Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 19 Aug 2023 00:56:54 +0200 Subject: [PATCH] JSON can be parsed --- client/bin/src/main.rs | 3 ++- client/bin/src/straba.rs | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/client/bin/src/main.rs b/client/bin/src/main.rs index 8fcf1e4..6225d1e 100644 --- a/client/bin/src/main.rs +++ b/client/bin/src/main.rs @@ -278,7 +278,8 @@ fn main() { let mut last_data = Option::None; // Test Webcrawler for public transportataion - straba::fetch_data(); + let name = straba::fetch_data(); + println!("Name: {:?}", name); loop { let delay = time::Duration::from_millis(10000); diff --git a/client/bin/src/straba.rs b/client/bin/src/straba.rs index 7759b76..3ed3a81 100644 --- a/client/bin/src/straba.rs +++ b/client/bin/src/straba.rs @@ -1,24 +1,24 @@ /* @file straba.rs * @brief fetch next depature of light rail vehicle */ -use serde::Deserialize; use serde_json::Value; +use serde::Deserialize; const STATION_URL:&str = "https://www.rnv-online.de/rest/departure/2494"; +/* ******************** JSON Description ****************************** */ #[derive(Default, Debug, Clone, PartialEq, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Station { - pub id: i64, + pub id: String, pub name: String, - pub lines: Vec, pub journeys: Vec, } #[derive(Default, Debug, Clone, PartialEq, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Line { - pub id: i64, + pub id: String, pub text: String, pub icon_outlined: i64, pub icon_color: String, @@ -32,20 +32,21 @@ pub struct Journey { pub destination: String, pub barrier_level: String, pub loads_forecast_type: String, - pub realtime_departure: i64, + pub realtime_departure: Option, pub scheduled_departure: i64, - pub difference: i64, + pub difference: Option, pub canceled: bool, } +// Return value pub struct NextDeparture { pub rheinau: i64, pub schoenau: i64, } - pub fn fetch_data() -> Option { let result = reqwest::blocking::get(STATION_URL); + println!("Start Straba Crawler"); if result.is_err() { println!("Could not read station response {:?}", result.err()); @@ -53,12 +54,12 @@ pub fn fetch_data() -> Option { } let text = result.unwrap().text(); if text.is_err() { - println!("Could not convert response {:?}", text.err()); + println!("Could not convert response {:?}", text.err()); return Option::None; } - let body: std::result::Result = serde_json::from_str(&text.unwrap()); + let body: std::result::Result = serde_json::from_str(&text.unwrap()); if body.is_err() { println!("Could not parse json {:?}", body.err()); @@ -66,6 +67,6 @@ pub fn fetch_data() -> Option { } let json = body.unwrap(); - let date = json["id"].to_string(); - Some(date) + let tmp = (json.journeys[0].destination).to_string(); + Some(tmp) }