@@ -50,6 +50,20 @@ impl RequestConfig {
5050 }
5151}
5252
53+ #[ derive( Deserialize , Debug , PartialEq ) ]
54+ pub struct ApiWorldType {
55+ #[ serde( rename = "LevelName" ) ]
56+ pub level_name : String ,
57+ #[ serde( rename = "DateTime" ) ]
58+ pub date_time : String ,
59+ #[ serde( rename = "TimeFactor" ) ]
60+ pub time_factor : f32 ,
61+ #[ serde( rename = "BaseLatitude" ) ]
62+ pub base_latitude : f64 ,
63+ #[ serde( rename = "BaseLongitude" ) ]
64+ pub base_longitude : f64 ,
65+ }
66+
5367#[ derive( Deserialize , Debug , PartialEq ) ]
5468pub struct ApiVehicleType {
5569 #[ serde( rename = "ActorName" ) ]
@@ -82,9 +96,17 @@ pub struct ApiVehicleType {
8296
8397#[ derive( Deserialize , Debug , PartialEq ) ]
8498pub struct ApiLamps {
85- #[ serde( rename = "LightHeadlight" , alias = "LightHeadlight1" , alias="Light Headlight" ) ]
99+ #[ serde(
100+ rename = "LightHeadlight" ,
101+ alias = "LightHeadlight1" ,
102+ alias = "Light Headlight"
103+ ) ]
86104 pub light_main : f32 ,
87- #[ serde( rename = "LightTraveling" , alias = "LightTraveling1" , alias="Light Travelling" ) ]
105+ #[ serde(
106+ rename = "LightTraveling" ,
107+ alias = "LightTraveling1" ,
108+ alias = "Light Travelling"
109+ ) ]
88110 pub traveller_light : f32 ,
89111 #[ serde( rename = "Door Button 1" , alias = "ButtonLight Door 1" , default ) ]
90112 pub front_door_light : f32 ,
@@ -260,6 +282,26 @@ pub async fn get_vehicle(
260282 Ok ( api_vehicle)
261283}
262284
285+ pub async fn get_world ( config : & RequestConfig ) -> Result < ApiWorldType , Box < dyn std:: error:: Error > > {
286+ let path = "world" ;
287+
288+ if config. debugging {
289+ println ! ( "get_world path: {}" , path) ;
290+ }
291+
292+ let body = get_telemetry_data ( & config, & path) . await ?;
293+
294+ let api_world: ApiWorldType = serde_json:: from_value ( body) . map_err ( |e| {
295+ eprintln ! ( "Failed to parse API response as World JSON: {}" , e) ;
296+ Box :: new ( e) as Box < dyn std:: error:: Error >
297+ } ) ?;
298+
299+ if config. debugging {
300+ println ! ( "{:?}" , & api_world) ;
301+ }
302+ Ok ( api_world)
303+ }
304+
263305pub fn get_button_by_name ( data : & serde_json:: Value , name : & str ) -> String {
264306 let ret = data
265307 . get ( "Buttons" )
0 commit comments