atlassian_rust_api/jira/endpoints/permissions/
get_permissions.rs1use std::sync::Arc;
2
3use crate::{Result, rest_client::RestClient, web::{Endpoint, QueryParams}};
4use crate::Jira;
5
6#[derive(Debug, Clone)]
7pub struct GetPermissionsBuilder {
8 client: Arc<RestClient>,
9 request: GetPermissionsRequest,
10}
11
12#[derive(Debug, Clone, Default)]
13struct GetPermissionsRequest {
14 permissions: Vec<String>,
15 project_id: Option<u32>,
16 project_key: Option<String>,
17 issue_id: Option<u32>,
18 issue_key: Option<String>,
19}
20
21impl Endpoint for GetPermissionsRequest {
22 fn endpoint(&self) -> std::borrow::Cow<'static, str> {
23 "mypermissions".into()
24 }
25
26 fn parameters(&self) -> crate::web::QueryParams<'_> {
27 let mut params = QueryParams::default();
28 params
29 .push("permissions", self.permissions.join(","))
30 .push_opt("projectId", self.project_id)
31 .push_opt("projectKey", self.project_key.as_ref())
32 .push_opt("issueId", self.issue_id)
33 .push_opt("issueKey", self.issue_key.as_ref());
34 params
35 }
36}
37
38impl GetPermissionsBuilder {
39 fn new(client: Arc<RestClient>) -> GetPermissionsBuilder {
40 GetPermissionsBuilder { client, request: GetPermissionsRequest::default() }
41 }
42
43 pub fn permission(mut self, permission: impl Into<String>) -> GetPermissionsBuilder {
45 self.request.permissions.push(permission.into());
46 self
47 }
48
49 pub fn permissions(mut self, permissions: Vec<impl Into<String>>) -> GetPermissionsBuilder {
51 let permissions = permissions.into_iter().map(|p| p.into()).collect::<Vec<String>>();
52 self.request.permissions.extend(permissions);
53 self
54 }
55
56 pub fn project_id(mut self, project_id: u32) -> GetPermissionsBuilder {
57 self.request.project_id = Some(project_id);
58 self
59 }
60
61 pub fn project_key(mut self, project_key: impl Into<String>) -> GetPermissionsBuilder {
62 self.request.project_key = Some(project_key.into());
63 self
64 }
65
66 pub fn issue_id(mut self, issue_id: u32) -> GetPermissionsBuilder {
67 self.request.issue_id = Some(issue_id);
68 self
69 }
70
71 pub fn issue_key(mut self, issue_key: impl Into<String>) -> GetPermissionsBuilder {
72 self.request.issue_key = Some(issue_key.into());
73 self
74 }
75
76 pub async fn send(self) -> Result<serde_json::Value> {
77 self.client.get(self.request).await
78 }
79}
80
81impl Jira {
83 pub fn get_permissions(&self) -> GetPermissionsBuilder {
86 GetPermissionsBuilder::new(Arc::clone(&self.client))
87 }
88}