diff --git a/airtime_mvc/application/modules/rest/Bootstrap.php b/airtime_mvc/application/modules/rest/Bootstrap.php index 904d05e4c..e7017ba16 100644 --- a/airtime_mvc/application/modules/rest/Bootstrap.php +++ b/airtime_mvc/application/modules/rest/Bootstrap.php @@ -10,5 +10,18 @@ class Rest_Bootstrap extends Zend_Application_Module_Bootstrap $restRoute = new Zend_Rest_Route($front, array(), array( 'rest'=> array('media'))); assert($router->addRoute('rest', $restRoute)); + + $downloadRoute = new Zend_Controller_Router_Route( + 'rest/media/:id/download', + array( + 'controller' => 'media', + 'action' => 'download', + 'module' => 'rest' + ), + array( + 'id' => '\d+' + ) + ); + $router->addRoute('download', $downloadRoute); } } \ No newline at end of file diff --git a/airtime_mvc/application/modules/rest/controllers/MediaController.php b/airtime_mvc/application/modules/rest/controllers/MediaController.php index ae10c6792..7cd269c28 100644 --- a/airtime_mvc/application/modules/rest/controllers/MediaController.php +++ b/airtime_mvc/application/modules/rest/controllers/MediaController.php @@ -51,6 +51,32 @@ class Rest_MediaController extends Zend_Rest_Controller ->appendBody(json_encode(CcFilesQuery::create()->find()->toArray(BasePeer::TYPE_FIELDNAME))); */ } + + public function downloadAction() + { + if (!$this->verifyAuth(true, true)) + { + return; + } + + $id = $this->getId(); + if (!$id) { + return; + } + + $file = CcFilesQuery::create()->findPk($id); + if ($file) { + $con = Propel::getConnection(); + $storedFile = new Application_Model_StoredFile($file, $con); + $baseUrl = Application_Common_OsPath::getBaseDir(); + + $this->getResponse() + ->setHttpResponseCode(200) + ->appendBody($this->_redirect($storedFile->getRelativeFileUrl($baseUrl).'/download/true')); + } else { + $this->fileNotFoundResponse(); + } + } public function getAction() { diff --git a/airtime_mvc/application/modules/rest/views/scripts/media/download.phtml b/airtime_mvc/application/modules/rest/views/scripts/media/download.phtml new file mode 100644 index 000000000..e69de29bb