Files
dolibarr/htdocs/includes/restler/Format/PlistFormat.php
jfefe b503b16f07 NEW : add restler framework
First step to build REST API into Dolibarr
2015-05-01 15:42:05 +02:00

92 lines
2.5 KiB
PHP

<?php
namespace Luracast\Restler\Format;
use Luracast\Restler\Data\Object;
use CFPropertyList\CFTypeDetector;
use CFPropertyList\CFPropertyList;
/**
* Plist Format for Restler Framework.
* Plist is the native data exchange format for Apple iOS and Mac platform.
* Use this format to talk to mac applications and iOS devices.
* This class is capable of serving both xml plist and binary plist.
*
* @category Framework
* @package Restler
* @subpackage format
* @author R.Arul Kumaran <arul@luracast.com>
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
* @version 3.0.0rc5
*/
class PlistFormat extends MultiFormat
{
/**
* @var boolean set it to true binary plist is preferred
*/
public static $compact = null;
const MIME = 'application/xml,application/x-plist';
const EXTENSION = 'plist';
public function setMIME($mime)
{
static::$mime = $mime;
static::$compact = $mime == 'application/x-plist';
}
/**
* Encode the given data in plist format
*
* @param array $data
* resulting data that needs to
* be encoded in plist format
* @param boolean $humanReadable
* set to true when restler
* is not running in production mode. Formatter has to
* make the encoded output more human readable
*
* @return string encoded string
*/
public function encode($data, $humanReadable = false)
{
//require_once 'CFPropertyList.php';
if (!isset(self::$compact)) {
self::$compact = !$humanReadable;
}
/**
*
* @var CFPropertyList
*/
$plist = new CFPropertyList ();
$td = new CFTypeDetector ();
$guessedStructure = $td->toCFType(
Object::toArray($data)
);
$plist->add($guessedStructure);
return self::$compact
? $plist->toBinary()
: $plist->toXML(true);
}
/**
* Decode the given data from plist format
*
* @param string $data
* data sent from client to
* the api in the given format.
*
* @return array associative array of the parsed data
*/
public function decode($data)
{
//require_once 'CFPropertyList.php';
$plist = new CFPropertyList ();
$plist->parse($data);
return $plist->toArray();
}
}