* login('workspace.company.tld', 'admin', 'SecretPassword'); * $api->sendRequest('...'); * $api->logout(); * } catch (KerioApiException $error) { * print $error->getMessage(); * } * ?> * * * @copyright Copyright © 2012-2012 Kerio Technologies s.r.o. * @license http://www.kerio.com/developers/license/sdk-agreement * @version 1.4.0.234 */ class KerioWorkspaceApi extends KerioApi { /** * Defines default product-specific JSON-RPC settings * @var array */ protected $jsonRpc = array( 'version' => '2.0', 'port' => 4060, 'api' => '/admin/api/jsonrpc/' ); private $file = array(); /** * Class constructor. * * @param string Application name * @param string Application vendor * @param string Application version * @return void * @throws KerioApiException */ public function __construct($name, $vendor, $version) { parent::__construct($name, $vendor, $version); } /** * Set component Web Administration. * * @param void * @return void */ public function setComponentAdmin() { $this->setJsonRpc('2.0', 4060, '/admin/api/jsonrpc/'); } /** * Set component Workspace Client. * * @param void * @return void */ public function setComponentClient() { $this->setJsonRpc('2.0', 443, '/server/data'); } /** * Get constants defined by product. * * @param void * @return array Array of constants */ public function getConstants() { $response = $this->sendRequest('Server.getProductInfo'); return $response['constants']; } /** * Get headers for PUT request. * * @param string Request body * @return string Request body */ protected function getHttpPutRequest($data) { $this->headers['POST'] = sprintf('%s?method=PutFile&filename=%s&parentId=%d&lenght=%d HTTP/1.1', $this->jsonRpc['api'], rawurlencode($this->file['filename']), $this->file['parentId'], $this->file['lenght']); $this->headers['Accept:'] = '*/*'; $this->headers['Content-Type:'] = sprintf('application/k-upload'); return $data; } /** * Put a file to server. * * @param string Absolute path to file * @param integer Reference ID where uploaded file belongs to * @return array Result * @throws KerioApiException */ public function uploadFile($filename, $id = null) { $data = @file_get_contents($filename); $this->file['filename'] = basename($filename); $this->file['parentId'] = $id; $this->file['lenght'] = strlen($data); if ($data) { $this->debug(sprintf('Uploading file %s to item %d', $filename, $id)); $json_response = $this->send('PUT', $data); } else { throw new KerioApiException(sprintf('Unable to open file %s', $filename)); } $response = json_decode($json_response, TRUE); return $response['result']; } }