Merge branch 'cc-5709-airtime-analyzer' of github.com:sourcefabric/Airtime into cc-5709-airtime-analyzer

This commit is contained in:
Albert Santoni 2014-04-30 18:32:42 -04:00
commit ace03edd2e
4 changed files with 75 additions and 9 deletions

View File

@ -23,5 +23,15 @@ class Rest_Bootstrap extends Zend_Application_Module_Bootstrap
)
);
$router->addRoute('download', $downloadRoute);
$clearLibraryRoute = new Zend_Controller_Router_Route(
'rest/media/clear',
array(
'controller' => 'media',
'action' => 'clear',
'module' => 'rest'
)
);
$router->addRoute('clear', $clearLibraryRoute);
}
}
}

View File

@ -80,6 +80,42 @@ class Rest_MediaController extends Zend_Rest_Controller
$this->fileNotFoundResponse();
}
}
public function clearAction()
{
//TODO:: make this not accessible via public api??
if (!$this->verifyAuth(true, true))
{
return;
}
//set file_exists flag to false for every file
$con = Propel::getConnection(CcFilesPeer::DATABASE_NAME);
$selectCriteria = new Criteria();
$selectCriteria->add(CcFilesPeer::FILE_EXISTS, true);
$updateCriteria = new Criteria();
$updateCriteria->add(CcFilesPeer::FILE_EXISTS, false);
BasePeer::doUpdate($selectCriteria, $updateCriteria, $con);
$path = isset($_SERVER['AIRTIME_BASE']) ? $_SERVER['AIRTIME_BASE']."/srv/airtime/stor/imported/*" : "/srv/airtime/stor/imported/*";
exec("rm -rf $path");
//update disk_usage value in cc_pref
$musicDir = CcMusicDirsQuery::create()
->filterByType('stor')
->filterByExists(true)
->findOne();
$storPath = $musicDir->getDirectory();
$freeSpace = disk_free_space($storPath);
$totalSpace = disk_total_space($storPath);
Application_Model_Preference::setDiskUsage($totalSpace - $freeSpace);
$this->getResponse()
->setHttpResponseCode(200)
->appendBody("Library has been cleared");
}
public function getAction()
{
@ -136,7 +172,21 @@ class Rest_MediaController extends Zend_Rest_Controller
$file->save();
return;
} else {
/* If full_path is set, the post request came from ftp.
* Users are allowed to upload folders via ftp. If this is the case
* we need to include the folder name with the file name, otherwise
* files won't get removed from the organize folder.
*/
if (isset($whiteList["full_path"])) {
$fullPath = $whiteList["full_path"];
$basePath = isset($_SERVER['AIRTIME_BASE']) ? $_SERVER['AIRTIME_BASE']."/srv/airtime/stor/organize/" : "/srv/airtime/stor/organize/";
//$relativePath is the folder name(if one) + track name, that was uploaded via ftp
$relativePath = substr($fullPath, strlen($basePath)-1);
} else {
$relativePath = $_FILES["file"]["name"];
}
$file->fromArray($whiteList);
$file->setDbOwnerId($this->getOwnerId());
$now = new DateTime("now", new DateTimeZone("UTC"));
@ -146,9 +196,9 @@ class Rest_MediaController extends Zend_Rest_Controller
$file->save();
$callbackUrl = $this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getRequestUri() . "/" . $file->getPrimaryKey();
$this->processUploadedFile($callbackUrl, $_FILES["file"]["name"], $this->getOwnerId());
$this->processUploadedFile($callbackUrl, $relativePath, $this->getOwnerId());
$this->getResponse()
->setHttpResponseCode(201)
->appendBody(json_encode($this->sanitizeResponse($file)));
@ -201,6 +251,10 @@ class Rest_MediaController extends Zend_Rest_Controller
$now = new DateTime("now", new DateTimeZone("UTC"));
$file->setDbMtime($now);
$file->save();
$this->removeEmptySubFolders(
isset($_SERVER['AIRTIME_BASE']) ? $_SERVER['AIRTIME_BASE']."/srv/airtime/stor/organize/" : "/srv/airtime/stor/organize/");
$this->getResponse()
->setHttpResponseCode(200)
->appendBody(json_encode($this->sanitizeResponse($file)));
@ -365,14 +419,11 @@ class Rest_MediaController extends Zend_Rest_Controller
Logging::error($e->getMessage());
return;
}
Logging::info($newTempFilePath);
//Logging::info("Old temp file path: " . $tempFilePath);
//Dispatch a message to airtime_analyzer through RabbitMQ,
//notifying it that there's a new upload to process!
Application_Model_RabbitMq::SendMessageToAnalyzer($newTempFilePath,
$importedStorageDirectory, $originalFilename,
$importedStorageDirectory, basename($originalFilename),
$callbackUrl, $apiKey);
}
@ -430,5 +481,10 @@ class Rest_MediaController extends Zend_Rest_Controller
return $response;
}
private function removeEmptySubFolders($path)
{
exec("find $path -empty -type d -delete");
}
}

View File

@ -28,7 +28,7 @@ post_file() {
api_key=$(awk -F "= " '/api_key/ {print $2}' $instance_conf_path)
until curl --max-time 30 $url -u $api_key":" -X POST -F "file=@${file_path}" -F "name=${filename}"
until curl --max-time 30 $url -u $api_key":" -X POST -F "file=@${file_path}" -F "full_path=${file_path}"
do
retry_count=$[$retry_count+1]
if [ $retry_count -ge $max_retry ]; then