atlassian_rust_api/jira/endpoints/fields/
get_custom_fields.rs1use std::sync::Arc;
2
3use crate::{Jira, Result, rest_client::RestClient, web::{Endpoint, QueryParams}};
4
5#[derive(Debug, Clone)]
6pub struct GetCustomFieldsBuilder {
7 client: Arc<RestClient>,
8 request: GetCustomFieldsRequest,
9}
10
11#[derive(Debug, Clone, Default)]
12struct GetCustomFieldsRequest {
13 search: Option<String>,
14 start_at: Option<u32>,
15 limit: Option<u32>,
16 cloud: bool
18}
19
20impl Endpoint for GetCustomFieldsRequest {
21 fn endpoint(&self) -> std::borrow::Cow<'static, str> {
22 match self.cloud {
23 true => "field/search".into(),
24 false => "customFields".into(),
25 }
26 }
27
28 fn parameters(&self) -> QueryParams<'_> {
29 let mut params = QueryParams::default();
30 params
31 .push("startAt", self.start_at.unwrap_or(1))
32 .push("maxResults", self.limit.unwrap_or(50))
33 .push_opt("search", self.search.as_ref());
34 params
35 }
36}
37
38impl GetCustomFieldsBuilder {
39 fn new(client: Arc<RestClient>) -> GetCustomFieldsBuilder {
40 let cloud = client.cloud.clone();
41 GetCustomFieldsBuilder { client, request: GetCustomFieldsRequest { cloud, ..Default::default() } }
42 }
43
44 pub fn search(mut self, search: impl Into<String>) -> GetCustomFieldsBuilder {
45 self.request.search = Some(search.into());
46 self
47 }
48
49 pub fn start_at(mut self, start_at: u32) -> GetCustomFieldsBuilder {
50 self.request.start_at = Some(start_at);
51 self
52 }
53
54 pub fn limit(mut self, limit: u32) -> GetCustomFieldsBuilder {
55 self.request.limit = Some(limit);
56 self
57 }
58
59 pub async fn send(self) -> Result<serde_json::Value> {
60 self.client.get(self.request).await
61 }
62}
63
64impl Jira {
65 pub fn get_custom_fields(&self) -> GetCustomFieldsBuilder {
67 GetCustomFieldsBuilder::new(Arc::clone(&self.client))
68 }
69}