1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! `jiragen` is a collection of utilities for sending requests to JIRA. It includes functionality for sending bulk issue creation from a .csv file.
//! ```no_run
//! use csv::{Reader, StringRecord};
//! use jiragen::{Config, csv_to_json, JiraClient, JiraIssue};
//! use serde_json::json;
//!
//! // Configure & initialize JIRA client
//! let config = Config {
//!   jira_url: "my-jira.com".to_string(),
//!   jira_user: "user".to_string(),
//!   jira_password: "password".to_string(),
//! };
//! let jira = JiraClient::new(config);
//!
//! // Prepare CSV data
//! let mut csv_reader = Reader::from_path("jiragen_issues.csv").unwrap();
//! let ids_record = csv_reader.headers().unwrap().clone();
//! let ids: Vec<&str> = ids_record.iter().collect();
//!
//! let mut csv_records = csv_reader.into_records();
//! csv_records.next(); // skip line 2, which contains human-readable field names
//!
//! // create bulk issues to send starting on line 3
//! let filtered_csv_records: Vec<StringRecord> = csv_records
//!   .filter_map(|record_result| match record_result {
//!     Ok(result) => Some(result),
//!     Err(_) => None,
//!   })
//!   .collect();
//! let json_values = csv_to_json(ids, filtered_csv_records).unwrap();
//!
//! let issues_to_create: Vec<JiraIssue> = json_values
//!   .into_iter()
//!   .map(|record_json| JiraIssue {
//!     update: None,
//!     fields: record_json,
//!   })
//!   .collect();
//!
//! let bulk_issue_create_request = jira.init_request("POST", "/rest/api/2/issue/bulk");
//! let request_json = json!({ "issueUpdates": issues_to_create });
//!
//! let mut response = bulk_issue_create_request
//!   .body(request_json.to_string())
//!   .send();
//! ```

#[macro_use]
extern crate lazy_static;

mod api;
pub use api::{JiraClient, JiraIssue};

mod config;
pub use config::Config;

mod error;
pub use error::{CustomError, Error};

mod serialize;
pub use serialize::csv_to_json;