diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-16 16:24:20 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-16 16:24:20 +0200 |
commit | 9e36ef31f9bf16d43326fd047619ada5ff16e072 (patch) | |
tree | e228816adedacfed87eb08e8bc86658536cbbe86 /controller/entityapiserializer.php | |
parent | 6a7ac3d9da3dea4130eb08a07a0a0603418d54ab (diff) | |
parent | 21728afff571adfc508cf5fa473d094946ef188f (diff) |
merge
Diffstat (limited to 'controller/entityapiserializer.php')
-rw-r--r-- | controller/entityapiserializer.php | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/controller/entityapiserializer.php b/controller/entityapiserializer.php new file mode 100644 index 000000000..073ad5c39 --- /dev/null +++ b/controller/entityapiserializer.php @@ -0,0 +1,68 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2014 + */ + +namespace OCA\News\Controller; + +use \OCA\News\Db\IAPI; + + +class EntityApiSerializer { + + private $level; + + public function __construct($level) { + $this->level = $level; + } + + + /** + * Call toAPI() method on all entities. Works on + * + * @param mixed $data : + * * Entity + * * Entity[] + * * array('level' => Entity[]) + * * Response + * @return array|mixed + */ + public function serialize($data) { + + if($data instanceof IAPI) { + return [$this->level => [$data->toAPI()]]; + } + + if(is_array($data) && array_key_exists($this->level, $data)) { + $data[$this->level] = $this->convert($data[$this->level]); + } elseif(is_array($data)) { + $data = [$this->level => $this->convert($data)]; + } + + return $data; + } + + + private function convert($entities) { + $converted = []; + + foreach($entities as $entity) { + if($entity instanceof IAPI) { + $converted[] = $entity->toAPI(); + + // break if it contains anything else than entities + } else { + return $entities; + } + } + + return $converted; + } + +}
\ No newline at end of file |