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