leash_integration_jira/
lib.rs1use leash_sdk::LeashIntegrations;
4
5#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7pub struct JiraGetParams {
8 pub path: String,
9 #[serde(rename = "queryParams")]
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub queryparams: Option<serde_json::Value>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub jq: Option<String>,
14 #[serde(rename = "outputFormat")]
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub outputformat: Option<String>,
17}
18#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
20pub struct JiraPostParams {
21 pub path: String,
22 #[serde(rename = "queryParams")]
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub queryparams: Option<serde_json::Value>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub jq: Option<String>,
27 #[serde(rename = "outputFormat")]
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub outputformat: Option<String>,
30 pub body: serde_json::Value,
31}
32#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
34pub struct JiraPutParams {
35 pub path: String,
36 #[serde(rename = "queryParams")]
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub queryparams: Option<serde_json::Value>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub jq: Option<String>,
41 #[serde(rename = "outputFormat")]
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub outputformat: Option<String>,
44 pub body: serde_json::Value,
45}
46#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
48pub struct JiraPatchParams {
49 pub path: String,
50 #[serde(rename = "queryParams")]
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub queryparams: Option<serde_json::Value>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub jq: Option<String>,
55 #[serde(rename = "outputFormat")]
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub outputformat: Option<String>,
58 pub body: serde_json::Value,
59}
60#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
62pub struct JiraDeleteParams {
63 pub path: String,
64 #[serde(rename = "queryParams")]
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub queryparams: Option<serde_json::Value>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub jq: Option<String>,
69 #[serde(rename = "outputFormat")]
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub outputformat: Option<String>,
72}
73
74pub struct JiraClient {
76 leash: LeashIntegrations,
77}
78
79impl JiraClient {
80 pub fn new(leash: LeashIntegrations) -> Self {
82 Self { leash }
83 }
84
85 pub async fn jira_get(&self, params: &JiraGetParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
87 self.leash.call("jira", "jira_get", Some(serde_json::to_value(params).unwrap_or_default())).await
88 }
89
90 pub async fn jira_post(&self, params: &JiraPostParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
92 self.leash.call("jira", "jira_post", Some(serde_json::to_value(params).unwrap_or_default())).await
93 }
94
95 pub async fn jira_put(&self, params: &JiraPutParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
97 self.leash.call("jira", "jira_put", Some(serde_json::to_value(params).unwrap_or_default())).await
98 }
99
100 pub async fn jira_patch(&self, params: &JiraPatchParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
102 self.leash.call("jira", "jira_patch", Some(serde_json::to_value(params).unwrap_or_default())).await
103 }
104
105 pub async fn jira_delete(&self, params: &JiraDeleteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
107 self.leash.call("jira", "jira_delete", Some(serde_json::to_value(params).unwrap_or_default())).await
108 }
109}