I would like to consume a Jira REST API, but have been unsuccessful.
The Jira site gives the following request URL:
curl -D- -u fred:fred -X POST --data {see below} -H "Content-Type: application/json" http://localhost:8090/rest/api/2/issue/
And this is the json array, which is located on a file called collector.json:
"fields": [ { "project": { "key": "ATL" }, "summary": "REST ye merry TEST.", "description": "Creating of an issue using project keys and issue type names using the REST API", "issuetype": { "name": "Task" } } ]
}
The following is the code:
<?php include_once "collector.php"; $jiraValues = jsonArray("collector.json"); $jira_url = "http://jira.howareyou.org:8091/rest/api/2/issue/createmeta"; $jiraString = json_encode($jiraValues); $request = curl_init($jira_url); // initiate curl object curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) curl_setopt($request, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($request, CURLOPT_ENCODING, ""); curl_setopt($request, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($request, CURLOPT_RETURNTRANSFER, true); curl_setopt($request, CURLOPT_POSTFIELDS, $jiraString); // use HTTP POST to send form data curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. curl_setopt($request, CURLOPT_URL, $jira_url); $json_raw = curl_exec($request); // execute curl post and store results in $json_raw curl_close($request); // close curl object // This line takes the response and breaks it into an array using the specified delimiting character $jira_response = json_decode($json_raw, TRUE); print_r($jira_response);
When I run it, Nothing happens. I get no feedback.
I found it here, and replaced the information with my valid information.
1 Answers
Answers 1
Firstly define some helpful globals to help :
define('JIRA_URL', 'http://jira.howareyou.org:8091'); define('USERNAME', ''); define('PASSWORD', '');
Then we need to define a post method :
function post_issue($data) { $jdata = json_encode($data); $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_POST => 1, CURLOPT_URL => JIRA_URL . '/rest/api/2/issue/createmeta' . $resource, CURLOPT_USERPWD => USERNAME . ':' . PASSWORD, CURLOPT_POSTFIELDS => $jdata, CURLOPT_HTTPHEADER => array('Content-type: application/json'), CURLOPT_RETURNTRANSFER => true )); $result = curl_exec($ch); curl_close($ch); return json_decode($result); }
Then how we want to use it is like so :
Create a new issue
$new_issue = array( 'fields' => array( 'project' => array('key' => 'TIS'), 'summary' => 'Test via REST', 'description' => 'Description of issue goes here.', 'priority' => array('name' => 'Blocker'), 'issuetype' => array('name' => 'Task'), 'labels' => array('a','b') ) );
Call our previously made function passing in the new issue :
$result = post_issue($new_issue); if (property_exists($result, 'errors')) { echo "Error(s) creating issue:\n"; var_dump($result); } else { echo "New issue created at " . JIRA_URL ."/browse/{$result->key}\n"; }
A basic example of posting a new issue via REST
Note: The Jira API URL may need to be configured slightly
0 comments:
Post a Comment