Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
redmine:api [2019/10/01 22:37] webproducer Ticket löschen ergänzt |
redmine:api [2020/10/21 16:47] (aktuell) webproducer Update class.Redmine.php |
||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
In diesem Beispiel wird der wohl wichtigste Bereich für die API beschrieben: Die Tickets. Durch die Ressource "Issue" können Ticktes angelegt, gelesen, geändert und auch gelöscht werden. Ein typisches Anwendungsbeispiel ist die Integration in die Webseite, um Kundenanfragen vom Typ "Fehler" und "Verbesserungsvorschlag" automatisch direkt in ein Ticket umzuwanden. | In diesem Beispiel wird der wohl wichtigste Bereich für die API beschrieben: Die Tickets. Durch die Ressource "Issue" können Ticktes angelegt, gelesen, geändert und auch gelöscht werden. Ein typisches Anwendungsbeispiel ist die Integration in die Webseite, um Kundenanfragen vom Typ "Fehler" und "Verbesserungsvorschlag" automatisch direkt in ein Ticket umzuwanden. | ||
+ | |||
+ | Es ist empfehlenswert für die API einen eigenen Benutzer in Redmine anzulegen und diesem neuen Benutzer auch die Projekte zuzuordnen, auf die mit der API zugegriffen werden sollen, da der vorinstallierte admin Berechtigungen über alle Projekte hat. | ||
Die Variable "key" muss durch den API-Zugriffsschlüssel ersetzt werden der in Redmine unter "Mein Konto" auf der rechten Seite angezeigt wird. | Die Variable "key" muss durch den API-Zugriffsschlüssel ersetzt werden der in Redmine unter "Mein Konto" auf der rechten Seite angezeigt wird. | ||
Zeile 30: | Zeile 32: | ||
return $result->issue->id; | return $result->issue->id; | ||
} | } | ||
+ | | ||
/** | /** | ||
* @param integer $id | * @param integer $id | ||
- | * @return redmineIssueModel | + | * @return models\redmineIssueModel |
+ | * @throws Exception | ||
*/ | */ | ||
public function getIssue( $id ) | public function getIssue( $id ) | ||
Zeile 48: | Zeile 51: | ||
} | } | ||
- | $issueModel = new redmineIssueModel(); | + | $issueModel = new models\redmineIssueModel(); |
$issueModel->subject = $result->issue->subject; | $issueModel->subject = $result->issue->subject; | ||
$issueModel->description = $result->issue->description; | $issueModel->description = $result->issue->description; | ||
+ | $issueModel->done_ratio = $result->done_ratio; | ||
$issueModel->assigned_to_id = $result->issue->assigned_to->id; | $issueModel->assigned_to_id = $result->issue->assigned_to->id; | ||
$issueModel->priority_id = $result->issue->priority->id; | $issueModel->priority_id = $result->issue->priority->id; | ||
Zeile 58: | Zeile 62: | ||
} | } | ||
+ | /** | ||
+ | * @param redmineIssueModel $issueModel | ||
+ | * @param integer $id | ||
+ | * @return bool | ||
+ | * @throws Exception | ||
+ | */ | ||
public function updateIssue( redmineIssueModel $issueModel, $id ) | public function updateIssue( redmineIssueModel $issueModel, $id ) | ||
{ | { | ||
Zeile 78: | Zeile 88: | ||
} | } | ||
+ | /** | ||
+ | * @param integer $id | ||
+ | * @return bool | ||
+ | * @throws Exception | ||
+ | */ | ||
public function deleteIssue( $id ) | public function deleteIssue( $id ) | ||
{ | { | ||
Zeile 95: | Zeile 110: | ||
/** | /** | ||
+ | * @param $curl | ||
* @return mixed | * @return mixed | ||
+ | * @throws Exception | ||
*/ | */ | ||
private function execute( $curl ) | private function execute( $curl ) | ||
Zeile 103: | Zeile 120: | ||
if( $curl_response === false ) | if( $curl_response === false ) | ||
{ | { | ||
- | $info = curl_getinfo( $curl ); | ||
curl_close( $curl ); | curl_close( $curl ); | ||
- | die( 'error occured during curl exec. Additioanl info: ' . var_export( $info ) ); | + | throw new \Exception( 'Service Unavailable', 503 ); |
} | } | ||
Zeile 111: | Zeile 127: | ||
$decoded = json_decode( $curl_response ); | $decoded = json_decode( $curl_response ); | ||
- | if( isset( $decoded->errors ) ) | + | if( isset( $decoded->error ) ) |
{ | { | ||
- | die( 'error occured: ' . print_r( $decoded->errors, 1 ) ); | + | throw new \Exception( $decoded->error, $decoded->status ); |
} | } | ||