jenkins_sdk/api/
queue.rs

1use crate::transport::request::Request;
2use crate::{Error, QueueItemId};
3use serde_json::Value;
4
5/// Jenkins queue (core) APIs.
6#[derive(Clone)]
7#[cfg(feature = "async")]
8pub struct QueueService {
9    client: crate::Client,
10}
11
12#[cfg(feature = "async")]
13impl QueueService {
14    pub(crate) fn new(client: crate::Client) -> Self {
15        Self { client }
16    }
17}
18
19#[cfg(feature = "async")]
20impl QueueService {
21    /// `GET /queue/api/json`
22    pub async fn list(&self, tree: Option<&str>) -> Result<Value, Error> {
23        let mut req = Request::get(["queue", "api", "json"]);
24        if let Some(tree) = tree {
25            req = req.query_pair("tree", tree);
26        }
27        self.client.send_json(req).await
28    }
29
30    /// `GET /queue/item/<id>/api/json`
31    pub async fn item(
32        &self,
33        id: impl Into<QueueItemId>,
34        tree: Option<&str>,
35    ) -> Result<Value, Error> {
36        let id = id.into();
37        let mut req = Request::get(["queue", "item", id.as_str(), "api", "json"]);
38        if let Some(tree) = tree {
39            req = req.query_pair("tree", tree);
40        }
41        self.client.send_json(req).await
42    }
43
44    /// `POST /queue/cancelItem?id=<id>`
45    pub async fn cancel(&self, id: impl Into<QueueItemId>) -> Result<(), Error> {
46        let id = id.into();
47        let req = Request::post(["queue", "cancelItem"]).query_pair("id", id.as_str());
48        self.client.send_unit(req).await
49    }
50}
51
52/// Jenkins queue (core) APIs (blocking).
53#[cfg(feature = "blocking")]
54#[derive(Clone)]
55pub struct BlockingQueueService {
56    client: crate::BlockingClient,
57}
58
59#[cfg(feature = "blocking")]
60impl BlockingQueueService {
61    pub(crate) fn new(client: crate::BlockingClient) -> Self {
62        Self { client }
63    }
64}
65
66#[cfg(feature = "blocking")]
67impl BlockingQueueService {
68    /// `GET /queue/api/json`
69    pub fn list(&self, tree: Option<&str>) -> Result<Value, Error> {
70        let mut req = Request::get(["queue", "api", "json"]);
71        if let Some(tree) = tree {
72            req = req.query_pair("tree", tree);
73        }
74        self.client.send_json(req)
75    }
76
77    /// `GET /queue/item/<id>/api/json`
78    pub fn item(&self, id: impl Into<QueueItemId>, tree: Option<&str>) -> Result<Value, Error> {
79        let id = id.into();
80        let mut req = Request::get(["queue", "item", id.as_str(), "api", "json"]);
81        if let Some(tree) = tree {
82            req = req.query_pair("tree", tree);
83        }
84        self.client.send_json(req)
85    }
86
87    /// `POST /queue/cancelItem?id=<id>`
88    pub fn cancel(&self, id: impl Into<QueueItemId>) -> Result<(), Error> {
89        let id = id.into();
90        let req = Request::post(["queue", "cancelItem"]).query_pair("id", id.as_str());
91        self.client.send_unit(req)
92    }
93}