Commit 0123b9fece777e8e7315e99b4eccfb83453f390a
1 parent
a478e892
Exists in
master
and in
73 other branches
Add APIs getCatalog & getCatalogsList
Showing
3 changed files
with
137 additions
and
16 deletions
Show diff stats
php/WebServices/WebServer.php
@@ -616,43 +616,85 @@ class WebServer | @@ -616,43 +616,85 @@ class WebServer | ||
616 | 616 | ||
617 | return array('success' => true, 'status' => $res['status'], $resultTag => WSConfigClass::getUrl().$res['result']); | 617 | return array('success' => true, 'status' => $res['status'], $resultTag => WSConfigClass::getUrl().$res['result']); |
618 | } | 618 | } |
619 | - | 619 | + |
620 | +/* | ||
621 | +* TODO Can be done by TTCONVERT function of AMDA_Kernel - more hard !!! | ||
622 | +* TODO Think about this if merge/union will be also done by AMDA_Kernel | ||
623 | +* | ||
624 | +* get Time Table : shared for anonymous user (impex) ; user' for user | ||
625 | +*/ | ||
626 | + public function getTimeTable($data) | ||
627 | + { | ||
628 | + $res = $this->init($data); | ||
629 | + | ||
630 | + if (!$res['success']){ | ||
631 | + $this->throwError("requestError", "Cannot parse request"); | ||
632 | + } | ||
633 | + | ||
634 | + $ttID = $res['vars']['ttID']; | ||
635 | + | ||
636 | + return $this->getTimeTableCatalog('timeTable', $ttID); | ||
637 | + } | ||
638 | + | ||
620 | /* | 639 | /* |
621 | * TODO Can be done by TTCONVERT function of AMDA_Kernel - more hard !!! | 640 | * TODO Can be done by TTCONVERT function of AMDA_Kernel - more hard !!! |
622 | * TODO Think about this if merge/union will be also done by AMDA_Kernel | 641 | * TODO Think about this if merge/union will be also done by AMDA_Kernel |
623 | * | 642 | * |
624 | * get Time Table : shared for anonymous user (impex) ; user' for user | 643 | * get Time Table : shared for anonymous user (impex) ; user' for user |
625 | */ | 644 | */ |
626 | - public function getTimeTable($data) | 645 | + public function getCatalog($data) |
627 | { | 646 | { |
628 | $res = $this->init($data); | 647 | $res = $this->init($data); |
629 | - | 648 | + |
630 | if (!$res['success']){ | 649 | if (!$res['success']){ |
631 | - $this->throwError("requestError", "Cannot parse request"); | 650 | + $this->throwError("requestError", "Cannot parse request"); |
632 | } | 651 | } |
633 | - | 652 | + |
653 | + $catID = $res['vars']['catID']; | ||
654 | + | ||
655 | + return $this->getTimeTableCatalog('catalog', $catID); | ||
656 | + } | ||
657 | + | ||
658 | +/* | ||
659 | +* TODO Can be done by TTCONVERT function of AMDA_Kernel - more hard !!! | ||
660 | +* TODO Think about this if merge/union will be also done by AMDA_Kernel | ||
661 | +* | ||
662 | +* get Time Table : shared for anonymous user (impex) ; user' for user | ||
663 | +*/ | ||
664 | + private function getTimeTableCatalog($type, $id) | ||
665 | + { | ||
634 | $this->initUserMgr(); | 666 | $this->initUserMgr(); |
635 | 667 | ||
636 | - $ttID = $res['vars']['ttID']; | ||
637 | - | ||
638 | if ($this->userID == WSConfigClass::getAnonymousUserName()) { | 668 | if ($this->userID == WSConfigClass::getAnonymousUserName()) { |
639 | $sharedObjMgr = new SharedObjectsMgr(); | 669 | $sharedObjMgr = new SharedObjectsMgr(); |
640 | - $ttSrc = $sharedObjMgr->getDataFilePath('timeTable', $ttID); | 670 | + $objSrc = $sharedObjMgr->getDataFilePath($type, $id); |
641 | } | 671 | } |
642 | else | 672 | else |
643 | - $ttSrc = USERTTDIR.$ttID.'.xml'; | 673 | + $objSrc = USERTTDIR.$id.'.xml'; |
644 | 674 | ||
645 | - if (!file_exists($ttSrc)) { | ||
646 | - $this->throwError("workspaceError", "No such table ".$ttID." for user ".$this->userID); | 675 | + if (!file_exists($objSrc)) { |
676 | + $this->throwError("workspaceError", "No such object ".$id." for user ".$this->userID); | ||
647 | } | 677 | } |
648 | 678 | ||
649 | - $ttDst = substr(strtolower(__FUNCTION__), 3)."_".$this->userID."_".$this->requestTime."_$ttID.xml"; | 679 | + $objDst = substr(strtolower(__FUNCTION__), 3)."_".$this->userID."_".$this->requestTime."_$id.xml"; |
680 | + | ||
681 | + if (!isset($this->requestManager)) | ||
682 | + $this->requestManager = new RequestManagerClass(); | ||
683 | + | ||
684 | + try { | ||
685 | + $obj = array( | ||
686 | + 'inputFile' => $objSrc, | ||
687 | + 'outputFormat' => 'VOTABLE', | ||
688 | + 'outputFileName' => $objDst, | ||
689 | + ); | ||
690 | + $res = $this->requestManager->runWSRequest($this->userID, $this->IPclient, FunctionTypeEnumClass::TTCONVERT, $this->service, $obj); | ||
691 | + } catch (Exception $e) { | ||
692 | + return array('success' => false, 'message' => 'Exception detected : '.$e->getMessage()); | ||
693 | + } | ||
650 | 694 | ||
651 | - //TODO can be done by | ||
652 | - // $res = $this->requestManager->runWSRequest($this->userID, $this->IPclient,FunctionTypeEnumClass::TTCONVERT, null, $ttID); | ||
653 | - $this->xsl2vot($ttSrc,$ttDst); | 695 | + $resKey = ($type == 'catalog') ? 'catFileURL' : 'ttFileURL'; |
654 | 696 | ||
655 | - return array('success' => true, 'ttFileURL' => WSConfigClass::getUrl().$ttDst); | 697 | + return array('success' => true, $resKey => WSConfigClass::getUrl().$objDst); |
656 | } | 698 | } |
657 | 699 | ||
658 | /* | 700 | /* |
@@ -0,0 +1,39 @@ | @@ -0,0 +1,39 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +/** | ||
4 | + * @api {get} getCatalog.php getCatalog | ||
5 | + * @apiDescription Provides the contents of a Time Table (TT). | ||
6 | + * @apiName getCatalog | ||
7 | + * @apiGroup webservices | ||
8 | + * | ||
9 | + * @apiParam {String} catID Identifier of the Catalog, as defined in the file returned by the « getCatalogsList » service. | ||
10 | + * @apiParam {String} [userID] Identifier of the user in AMDA (*mandatory for user owned data*) | ||
11 | + * @apiParam {String} [password] Password of the user in AMDA (*mandatory for user owned data*) | ||
12 | + * | ||
13 | + * @apiSuccess {String} success `true` | ||
14 | + * @apiSuccess {String} catFileURL URL of the XML file containing the Catalog (VOTable format) | ||
15 | + * | ||
16 | + * @apiSuccessExample Success-Response: | ||
17 | + * HTTP/1.1 200 OK | ||
18 | + * [success] => 1 | ||
19 | + * [ttFileURL] => http://amda.irap.omp.eu/AMDA/data/WSRESULT/catalog_userID_20180919_cat_0.xml | ||
20 | + * | ||
21 | + * @apiErrorExample Error-Response: | ||
22 | + * {"error":"No such table sharedcatalog_100 for user impex"} | ||
23 | + */ | ||
24 | + | ||
25 | +require_once '../config.php'; | ||
26 | + | ||
27 | + $amda_ws = new WebServer(); | ||
28 | + | ||
29 | + $result = $amda_ws->getCatalog($_GET); | ||
30 | + | ||
31 | + if ($result['success']){ | ||
32 | + echo $result['catFileURL']; | ||
33 | + } | ||
34 | + else { | ||
35 | + echo $result['message']; | ||
36 | + } | ||
37 | +?> | ||
38 | + | ||
39 | + |
@@ -0,0 +1,40 @@ | @@ -0,0 +1,40 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +/** | ||
4 | + * @api {get} getCatalogsList.php getCatalogsList | ||
5 | + * @apiDescription Provides the private list of Catalogs owned by a user. When called without | ||
6 | + * userID, this web-service returns the list of shared Catalogs. | ||
7 | + * | ||
8 | + * @apiName getCatalogsList | ||
9 | + * @apiGroup webservices | ||
10 | + * | ||
11 | + * @apiParam {String} [userID] Identifier of the user in AMDA. | ||
12 | + * @apiParam {String} [password] Password of the user in AMDA. | ||
13 | + * | ||
14 | + * @apiSuccess {String} success `true` | ||
15 | + * @apiSuccess {String} CatalogsList URL of the XML file, which contains the list of Catalogs. | ||
16 | + * | ||
17 | + * @apiSuccessExample Success-Response: | ||
18 | + * HTTP/1.1 200 OK | ||
19 | + * [success] => 1 | ||
20 | + * [CatalogsList] => http://amda.irap.omp.eu/data/WSRESULT/catalogs_impex_20180905.xml | ||
21 | + * | ||
22 | + * @apiErrorExample Error-Response: | ||
23 | + * {"error": "Workspace Error : Cannot load Catalogs list for userID"} | ||
24 | + */ | ||
25 | + | ||
26 | + require_once '../config.php'; | ||
27 | + | ||
28 | + $amda_ws = new WebServer(); | ||
29 | + | ||
30 | + $result = $amda_ws->getCatalogsList($_GET); | ||
31 | + | ||
32 | + if ($result['success']) | ||
33 | + { | ||
34 | + echo $result['CatalogsList']; | ||
35 | + } | ||
36 | + else | ||
37 | + { | ||
38 | + echo $result['message']; | ||
39 | + } | ||
40 | +?> |