Skip to content
This repository has been archived by the owner on Sep 10, 2021. It is now read-only.

Commit

Permalink
Add restful API for tracker module
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamie Snape committed Mar 9, 2015
1 parent ce13e7b commit 921a243
Show file tree
Hide file tree
Showing 7 changed files with 1,067 additions and 5 deletions.
15 changes: 10 additions & 5 deletions core/ApiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ protected function _exceptionHandler(Exception $exception)
* => function name in the corresponding ApiComponent. This array must have
* 'default' in its keys.
* @param null|string $moduleName module from which to get the ApiComponent
* @param bool $rpcStyle wrap data in RPC-style "data" and "msg" fields
*
* {@example
* _genericAction(array('id' => 2), 'get', $apiFunctionArray) is called and
Expand All @@ -118,7 +119,7 @@ protected function _exceptionHandler(Exception $exception)
* 'itemDuplicate' in ApiComponent (in core module) to do the API work.
* }
*/
protected function _genericAction($args, $resource, $restAction, $apiFunctions, $moduleName = null)
protected function _genericAction($args, $resource, $restAction, $apiFunctions, $moduleName = null, $rpcStyle = true)
{
$ApiComponent = MidasLoader::loadComponent('Api'.$resource, $moduleName);
$httpCode = $this->httpSuccessCode[strtolower($restAction)];
Expand All @@ -138,10 +139,14 @@ protected function _genericAction($args, $resource, $restAction, $apiFunctions,
$calledFunction = $calledFunction.'Wrapper';
}
$resultsArray = $ApiComponent->$calledFunction($args, $userDao);
if (isset($resultsArray)) {
$apiResults['data'] = $resultsArray;
} else { // if the api function doesn't provide an return value
$apiResults['msg'] = "succeed!"; // there is no exception if code reaches here
if ($rpcStyle) {
if (isset($resultsArray)) {
$apiResults['data'] = $resultsArray;
} else { // if the api function doesn't provide an return value
$apiResults['msg'] = "succeed!"; // there is no exception if code reaches here
}
} else {
$apiResults = $resultsArray;
}
} catch (Exception $e) {
list($apiResults['error'], $httpCode) = $this->_exceptionHandler($e);
Expand Down
107 changes: 107 additions & 0 deletions modules/tracker/controllers/api/ProducerController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?php
/*=========================================================================
MIDAS Server
Copyright (c) Kitware SAS. 26 rue Louis Guérin. 69100 Villeurbanne, FRANCE
All rights reserved.
More information http://www.kitware.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0.txt
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
=========================================================================*/

/**
* API producer controller for the tracker module.
*
* @package Modules\Tracker\Controller
*/
class Apitracker_ProducerController extends ApiController
{
/** @var string */
public $moduleName = 'tracker';

/** Handle HTTP DELETE requests. Requires an id parameter. */
public function deleteAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP GET requests. Requires an id parameter. */
public function getAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP HEAD requests. */
public function headAction()
{
$this->_response->setHttpResponseCode(200); // 200 OK
}

/** Handle HTTP GET index or list requests. */
public function indexAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP OPTIONS requests. */
public function optionsAction()
{
$this->_response->setHeader('Allow', 'DELETE, GET, HEAD, OPTIONS, POST, PUT');
}

/** Handle HTTP POST requests. */
public function postAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP PUT requests. Requires an id parameter. */
public function putAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}
}
107 changes: 107 additions & 0 deletions modules/tracker/controllers/api/ScalarController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?php
/*=========================================================================
MIDAS Server
Copyright (c) Kitware SAS. 26 rue Louis Guérin. 69100 Villeurbanne, FRANCE
All rights reserved.
More information http://www.kitware.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0.txt
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
=========================================================================*/

/**
* API scalar controller for the tracker module.
*
* @package Modules\Tracker\Controller
*/
class Apitracker_ScalarController extends ApiController
{
/** @var string */
public $moduleName = 'tracker';

/** Handle HTTP DELETE requests. Requires an id parameter. */
public function deleteAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP GET requests. Requires an id parameter. */
public function getAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP HEAD requests. */
public function headAction()
{
$this->_response->setHttpResponseCode(200); // 200 OK
}

/** Handle HTTP GET index or list requests. */
public function indexAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP OPTIONS requests. */
public function optionsAction()
{
$this->_response->setHeader('Allow', 'DELETE, GET, HEAD, OPTIONS, POST, PUT');
}

/** Handle HTTP POST requests. */
public function postAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP PUT requests. Requires an id parameter. */
public function putAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}
}
107 changes: 107 additions & 0 deletions modules/tracker/controllers/api/TrendController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?php
/*=========================================================================
MIDAS Server
Copyright (c) Kitware SAS. 26 rue Louis Guérin. 69100 Villeurbanne, FRANCE
All rights reserved.
More information http://www.kitware.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0.txt
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
=========================================================================*/

/**
* API trend controller for the tracker module.
*
* @package Modules\Tracker\Controller
*/
class Apitracker_TrendController extends ApiController
{
/** @var string */
public $moduleName = 'tracker';

/** Handle HTTP DELETE requests. Requires an id parameter. */
public function deleteAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP GET requests. Requires an id parameter. */
public function getAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP HEAD requests. */
public function headAction()
{
$this->_response->setHttpResponseCode(200); // 200 OK
}

/** Handle HTTP GET index or list requests. */
public function indexAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP OPTIONS requests. */
public function optionsAction()
{
$this->_response->setHeader('Allow', 'DELETE, GET, HEAD, OPTIONS, POST, PUT');
}

/** Handle HTTP POST requests. */
public function postAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}

/** Handle HTTP PUT requests. Requires an id parameter. */
public function putAction()
{
$this->_genericAction(
$this->_request->getParams(),
$this->_request->getControllerName(),
$this->_request->getActionName(),
array('default' => $this->_request->getActionName()),
$this->moduleName,
false
);
}
}
Loading

0 comments on commit 921a243

Please sign in to comment.