Skip to main content

eero_api/api/
eeros.rs

1use crate::client::EeroClient;
2use crate::error::Result;
3use crate::types::eero::{EeroNode, EeroUpdate};
4
5impl EeroClient {
6    /// List all eero nodes on a network.
7    #[tracing::instrument(skip(self))]
8    pub async fn get_eeros(&self, network_id: u64) -> Result<Vec<EeroNode>> {
9        let url = self.url(&format!("/networks/{network_id}/eeros"));
10        self.get(&url).await
11    }
12
13    /// Get a specific eero node by its resource URL.
14    #[tracing::instrument(skip(self))]
15    pub async fn get_eero(&self, eero_url: &str) -> Result<EeroNode> {
16        let url = self.resource_url(eero_url);
17        self.get(&url).await
18    }
19
20    /// Update an eero node (location, LED, nightlight settings).
21    #[tracing::instrument(skip(self, update))]
22    pub async fn update_eero(
23        &self,
24        eero_url: &str,
25        update: &EeroUpdate,
26    ) -> Result<EeroNode> {
27        let url = self.resource_url(eero_url);
28        self.put(&url, update).await
29    }
30
31    /// Reboot a specific eero node.
32    #[tracing::instrument(skip(self))]
33    pub async fn reboot_eero(&self, eero_url: &str) -> Result<serde_json::Value> {
34        let url = format!("{}/reboot", self.resource_url(eero_url));
35        self.post_empty(&url).await
36    }
37}