CC-5856: Analyzer metadata exception

* Fixed parsing of metadata when there's empty lists returned (mutagen's
  API is awful)
* Return HTTP 422 if there's any exception in validating the metadata
This commit is contained in:
Albert Santoni 2014-06-03 12:43:01 -04:00
parent 4548123ad9
commit a969f8fc44
2 changed files with 31 additions and 24 deletions

View file

@ -383,6 +383,7 @@ class Rest_MediaController extends Zend_Rest_Controller
private function validateRequestData($file, &$whiteList)
{
try {
// EditAudioMD form is used here for validation
$fileForm = new Application_Form_EditAudioMD();
$fileForm->startForm($file->getDbId());
@ -408,6 +409,9 @@ class Rest_MediaController extends Zend_Rest_Controller
}
if (!$fileForm->isValidPartial($whiteList)) {
throw Exception("Data validation failed");
}
} catch (Exception $e) {
$errors = $fileForm->getErrors();
$messages = $fileForm->getMessages();
Logging::error($messages);

View file

@ -132,7 +132,10 @@ class MetadataAnalyzer(Analyzer):
# Some tags are returned as lists because there could be multiple values.
# This is unusual so we're going to always just take the first item in the list.
if isinstance(metadata[airtime_tag], list):
if metadata[airtime_tag]:
metadata[airtime_tag] = metadata[airtime_tag][0]
else: # Handle empty lists
metadata[airtime_tag] = ""
except KeyError:
continue