account for pagination when listing all servers
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| use hcloud::apis::{configuration::Configuration, servers_api}; | ||||
| use hcloud::apis::{configuration::Configuration, servers_api::{self, ListServersParams}}; | ||||
| use hcloud::models::Server; | ||||
|  | ||||
| #[derive(Debug, Clone)] | ||||
| @@ -24,14 +24,33 @@ impl HetznerClient { | ||||
|     } | ||||
|  | ||||
|     pub async fn list_servers(&self) -> Result<Vec<WrappedServer>, Box<dyn std::error::Error>> { | ||||
|         let servers = servers_api::list_servers(&self.configuration, Default::default()) | ||||
|             .await? | ||||
|             .servers | ||||
|             .into_iter() | ||||
|             .map(WrappedServer) | ||||
|             .collect(); | ||||
|         let mut all_servers = Vec::new(); | ||||
|         let mut page = 1; | ||||
|         let per_page = 50; | ||||
|  | ||||
|         Ok(servers) | ||||
|         loop { | ||||
|             let params = ListServersParams { | ||||
|                 page: Some(page), | ||||
|                 per_page: Some(per_page), | ||||
|                 ..Default::default() | ||||
|             }; | ||||
|  | ||||
|             let response = servers_api::list_servers(&self.configuration, params).await?; | ||||
|             let mut servers: Vec<WrappedServer> = response.servers.into_iter().map(WrappedServer).collect(); | ||||
|             let is_empty = servers.is_empty(); | ||||
|  | ||||
|             all_servers.append(&mut servers); | ||||
|              | ||||
|             println!("next page? {:#?}", response.meta); | ||||
|  | ||||
|             if is_empty || response.meta.pagination.next_page.is_none() { | ||||
|                 break; | ||||
|             } | ||||
|  | ||||
|             page += 1; | ||||
|         } | ||||
|  | ||||
|         Ok(all_servers) | ||||
|     } | ||||
|  | ||||
|     pub async fn get_server_status(&self, server_id: i64) -> Result<String, Box<dyn std::error::Error>> { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user