Can get the full list of relays through the API
This commit is contained in:
		| @@ -1,6 +1,6 @@ | ||||
| use crate::app_config::AppConfig; | ||||
| use crate::crypto::pki; | ||||
| use crate::devices::device::{Device, DeviceGeneralInfo, DeviceId, DeviceInfo}; | ||||
| use crate::devices::device::{Device, DeviceGeneralInfo, DeviceId, DeviceInfo, DeviceRelay}; | ||||
| use crate::utils::time_utils::time_secs; | ||||
| use openssl::x509::{X509Req, X509}; | ||||
| use std::collections::HashMap; | ||||
| @@ -192,4 +192,12 @@ impl DevicesList { | ||||
|  | ||||
|         Ok(()) | ||||
|     } | ||||
|  | ||||
|     /// Get the full list of relays | ||||
|     pub fn relays_list(&mut self) -> Vec<DeviceRelay> { | ||||
|         self.0 | ||||
|             .iter() | ||||
|             .flat_map(|(_id, d)| d.relays.clone()) | ||||
|             .collect() | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| use crate::constants; | ||||
| use crate::devices::device::{Device, DeviceGeneralInfo, DeviceId, DeviceInfo}; | ||||
| use crate::devices::device::{Device, DeviceGeneralInfo, DeviceId, DeviceInfo, DeviceRelay}; | ||||
| use crate::devices::devices_list::DevicesList; | ||||
| use crate::energy::consumption; | ||||
| use crate::energy::consumption::EnergyConsumption; | ||||
| @@ -171,3 +171,16 @@ impl Handler<GetSingleDevice> for EnergyActor { | ||||
|         self.devices.get_single(&msg.0) | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// Get the full list of relays | ||||
| #[derive(Message)] | ||||
| #[rtype(result = "Vec<DeviceRelay>")] | ||||
| pub struct GetRelaysList; | ||||
|  | ||||
| impl Handler<GetRelaysList> for EnergyActor { | ||||
|     type Result = Vec<DeviceRelay>; | ||||
|  | ||||
|     fn handle(&mut self, _msg: GetRelaysList, _ctx: &mut Context<Self>) -> Self::Result { | ||||
|         self.devices.relays_list() | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -107,10 +107,12 @@ pub async fn secure_server(energy_actor: EnergyActorAddr) -> anyhow::Result<()> | ||||
|             })) | ||||
|             .route("/", web::get().to(server_controller::secure_home)) | ||||
|             // Web API | ||||
|             // Server controller | ||||
|             .route( | ||||
|                 "/web_api/server/config", | ||||
|                 web::get().to(server_controller::config), | ||||
|             ) | ||||
|             // Auth controller | ||||
|             .route( | ||||
|                 "/web_api/auth/password_auth", | ||||
|                 web::post().to(auth_controller::password_auth), | ||||
| @@ -123,6 +125,7 @@ pub async fn secure_server(energy_actor: EnergyActorAddr) -> anyhow::Result<()> | ||||
|                 "/web_api/auth/sign_out", | ||||
|                 web::get().to(auth_controller::sign_out), | ||||
|             ) | ||||
|             // Energy controller | ||||
|             .route( | ||||
|                 "/web_api/energy/curr_consumption", | ||||
|                 web::get().to(energy_controller::curr_consumption), | ||||
| @@ -131,6 +134,7 @@ pub async fn secure_server(energy_actor: EnergyActorAddr) -> anyhow::Result<()> | ||||
|                 "/web_api/energy/cached_consumption", | ||||
|                 web::get().to(energy_controller::cached_consumption), | ||||
|             ) | ||||
|             // Devices controller | ||||
|             .route( | ||||
|                 "/web_api/devices/list_pending", | ||||
|                 web::get().to(devices_controller::list_pending), | ||||
| @@ -155,6 +159,11 @@ pub async fn secure_server(energy_actor: EnergyActorAddr) -> anyhow::Result<()> | ||||
|                 "/web_api/device/{id}", | ||||
|                 web::delete().to(devices_controller::delete_device), | ||||
|             ) | ||||
|             // Relays API | ||||
|             .route( | ||||
|                 "/web_api/relays/list", | ||||
|                 web::get().to(relays_controller::get_list), | ||||
|             ) | ||||
|             // Devices API | ||||
|             .route( | ||||
|                 "/devices_api/utils/time", | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| pub mod auth_controller; | ||||
| pub mod devices_controller; | ||||
| pub mod energy_controller; | ||||
| pub mod relays_controller; | ||||
| pub mod server_controller; | ||||
|   | ||||
							
								
								
									
										10
									
								
								central_backend/src/server/web_api/relays_controller.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								central_backend/src/server/web_api/relays_controller.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| use crate::energy::energy_actor; | ||||
| use crate::server::custom_error::HttpResult; | ||||
| use crate::server::WebEnergyActor; | ||||
| use actix_web::HttpResponse; | ||||
|  | ||||
| /// Get the full list of relays | ||||
| pub async fn get_list(actor: WebEnergyActor) -> HttpResult { | ||||
|     let list = actor.send(energy_actor::GetRelaysList).await?; | ||||
|     Ok(HttpResponse::Ok().json(list)) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user