You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.9 KiB
43 lines
1.9 KiB
use reqwest;
|
|
use serde_json::Value;
|
|
|
|
#[derive(Debug)]
|
|
pub struct TicketData {
|
|
class : String, // Type in Jira
|
|
status : String,
|
|
priority : String,
|
|
subject : String, // Summary in Jira
|
|
issue_trak_num : String,
|
|
issue_trak_link: String,
|
|
assignee : String, // Next Action in IssueTrak
|
|
comment : String, // Note in IssueTrak
|
|
// Not yet implemented Solution : String
|
|
}
|
|
|
|
impl TicketData {
|
|
pub fn from_jira_data(json_value: Value) -> Result<Self, Box<dyn std::error::Error>>{
|
|
// All of the data we need is under the fields key
|
|
let json_fields = match json_value.get("fields") {
|
|
Some(f) => {f.clone()},
|
|
_ => { return Err("No fields")?}
|
|
};
|
|
|
|
/*
|
|
Handling Jira comments is going to a nightmare. This will be implemented later
|
|
*/
|
|
|
|
// Believe it or not this is easier than dealing with creating structs for the reposonse
|
|
// if the fields are blank 'null' will be returned as a string
|
|
Ok(TicketData {
|
|
class : json_fields.get("issuetype").unwrap().get("name").unwrap().to_string(),
|
|
status: json_fields.get("status").unwrap().get("name").unwrap().to_string(),
|
|
priority: json_fields.get("priority").unwrap().get("name").unwrap().to_string(),
|
|
subject: json_fields.get("summary").unwrap().to_string(),
|
|
issue_trak_num: json_fields.get("customfield_10065").unwrap().to_string(),
|
|
issue_trak_link: json_fields.get("customfield_10060").unwrap().to_string(),
|
|
assignee: json_fields.get("assignee").unwrap().get("displayName").unwrap().to_string(),
|
|
comment: "Test".to_string()//json_fields.get("comment").unwrap().get("displayName").unwrap().to_string(),
|
|
//solution: json_fields.get("solu").unwrap().get("displayName").unwrap().to_string()
|
|
})
|
|
}
|
|
} |