Allow apps to get photos of VObjects

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2021-06-09 10:51:09 +02:00
parent 932a385c56
commit b1031f3985
No known key found for this signature in database
GPG key ID: 7076EA9751AACDDA

View file

@ -36,6 +36,7 @@ use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\ILogger;
use Sabre\CardDAV\Card;
use Sabre\VObject\Document;
use Sabre\VObject\Parameter;
use Sabre\VObject\Property\Binary;
use Sabre\VObject\Reader;
@ -206,9 +207,28 @@ class PhotoCache {
throw new NotFoundException('Avatar not found');
}
/**
* @param Card $node
* @return bool|array{body: string, Content-Type: string}
*/
private function getPhoto(Card $node) {
try {
$vObject = $this->readCard($node->get());
return $this->getPhotoFromVObject($vObject);
} catch (\Exception $e) {
$this->logger->logException($e, [
'message' => 'Exception during vcard photo parsing'
]);
}
return false;
}
/**
* @param Document $vObject
* @return bool|array{body: string, Content-Type: string}
*/
public function getPhotoFromVObject(Document $vObject) {
try {
if (!$vObject->PHOTO) {
return false;
}