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:
parent
4548123ad9
commit
a969f8fc44
2 changed files with 31 additions and 24 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue