account for pagination when listing all servers
This commit is contained in:
parent
a6c102aabf
commit
92e8ac6d16
@ -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>> {
|
||||
|
Loading…
Reference in New Issue
Block a user