diff --git a/MaarchREST.class.php b/MaarchREST.class.php index 65d0c8564b52f88b042ca1c67bd74a5c7976fc85..22daeea0d045fd8b8f03ce569eb7c40714c457e3 100644 --- a/MaarchREST.class.php +++ b/MaarchREST.class.php @@ -116,14 +116,50 @@ class MaarchREST extends SAEConnecteur { ); if ($messageInformations) { - $zipMessage = $this->getWS( - "/medona/message/".$messageInformations['messageId']."/Export", - "application/zip" - ); + $zipMessage = $this->getZipMessage($messageInformations['messageId']); + } else { + throw new UnrecoverableException("Le paquet du bordereau identifié par ".$messageInformations['messageId']." n'a pas pu êtr récuperé."); + } + + return $this->getXmlFromZipMessage($zipMessage, $messageInformations['messageId']); + } + + /** + * @param $id_transfert + * @return bool|mixed + * @throws Exception + */ + public function getReply($id_transfert) { + if (! $id_transfert){ + throw new UnrecoverableException("L'identifiant du transfert n'a pas été trouvé"); + } + + $messageInformations = $this->getWS( + "/medona/message/reference?reference=" + .urlencode($id_transfert), + "application/json" + ); + + if ($messageInformations['status'] != "processed") { + throw new UnrecoverableException("Le bordereau dont la référence est " . $id_transfert . " n'a pas encore été traité dans le SAE Maarch RM."); + } + + if ($messageInformations) { + $zipMessage = $this->getZipMessage($messageInformations['replyMessage']['messageId']); } else { throw new UnrecoverableException("Le paquet du bordereau identifié par ".$messageInformations['messageId']." n'a pas pu êtr récuperé."); } + return $this->getXmlFromZipMessage($zipMessage, $messageInformations['replyMessage']['messageId']); + } + + /** + * @param $zipMessage (Zip binary file from Maarch RM Export) + * @param $message ID + * @return xmlContent + * @throws Exception + */ + public function getXmlFromZipMessage($zipMessage, $messageId) { $tmpFile = new TmpFile(); $zipTempFile = $tmpFile->create(); file_put_contents($zipTempFile, $zipMessage); @@ -134,13 +170,13 @@ class MaarchREST extends SAEConnecteur { try { shell_exec("7z x $zipTempFile -o$path *.xml"); } catch (Exception $e) { - return($e); + throw new UnrecoverableException($e); } - $fullFilePath = $path."/".$messageInformations['messageId'].".xml"; + $fullFilePath = $path."/".$messageId.".xml"; if (!file_exists($fullFilePath)) { - return "Problème lors de la lecture du fichier $fullFilePath."; + throw new UnrecoverableException("Problème lors de la lecture du fichier $fullFilePath."); } $xmlContent = file_get_contents($fullFilePath); @@ -150,30 +186,29 @@ class MaarchREST extends SAEConnecteur { return $xmlContent; } - + /** - * @param $id_transfert - * @return bool|mixed + * @param $messageid (refered to technical id in Maarch RM software) + * @return zip binary * @throws Exception */ - public function getReply($id_transfert) { - if (! $id_transfert){ - throw new UnrecoverableException("L'identifiant du transfert n'a pas été trouvé"); + public function getZipMessage($messageId) { + if (!$messageId) { + throw new UnrecoverableException("Le paquet du bordereau identifié par ".$messageId." n'a pas pu êtr récuperé."); } - - $messageInformations = $this->getWS( - "/medona/message/reference?reference=" - .urlencode($id_transfert), - "application/json" + + $zipMessage = $this->getWS( + "/medona/message/".$messageId."/Export", + "application/zip" ); - if ($messageInformations['status'] != "processed") { - return "Le bordereau dont la référence est $id_transfert n'a pas encore été traité dans le SAE Maarch RM."; + if ($zipMessage) { + return $zipMessage; + } else { + throw new UnrecoverableException("Le paquet du bordereau identifié par ".$messageId." n'a pas pu êtr récuperé."); } - - return $messageInformations; } - + public function getURL($cote) { if (empty($this->url)){ return $cote;