1use crate::client::NoBody;
2use crate::{Client, Error, Page, types::*, util::urlish};
3
4impl Client {
5 pub async fn create_pod(&self, pod: CreatePod) -> Result<Pod, Error> {
7 self.request(reqwest::Method::POST, "/v0/pods", &[], Some(&pod))
8 .await
9 }
10
11 pub async fn list_pods(&self, page: Page) -> Result<PodList, Error> {
13 self.request(
14 reqwest::Method::GET,
15 "/v0/pods",
16 &page.query(),
17 None::<&NoBody>,
18 )
19 .await
20 }
21
22 pub async fn list_all_pods(&self) -> Result<Vec<Pod>, Error> {
24 let mut out = Vec::new();
25 let mut token = None;
26 loop {
27 let resp = self
28 .list_pods(Page {
29 limit: None,
30 page_token: token,
31 })
32 .await?;
33 let next = resp.next_page_token;
34 out.extend(resp.pods);
35 match next {
36 Some(t) => token = Some(t),
37 None => return Ok(out),
38 }
39 }
40 }
41
42 pub async fn get_pod(&self, pod_id: &str) -> Result<Pod, Error> {
44 self.request(
45 reqwest::Method::GET,
46 &format!("/v0/pods/{}", urlish(pod_id)),
47 &[],
48 None::<&NoBody>,
49 )
50 .await
51 }
52
53 pub async fn delete_pod(&self, pod_id: &str) -> Result<(), Error> {
55 self.request(
56 reqwest::Method::DELETE,
57 &format!("/v0/pods/{}", urlish(pod_id)),
58 &[],
59 None::<&NoBody>,
60 )
61 .await
62 }
63}