* * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ namespace OCA\Richdocuments\WOPI; class Parser { /** @var DiscoveryManager */ private $discoveryManager; /** * @param DiscoveryManager $discoveryManager */ public function __construct(DiscoveryManager $discoveryManager) { $this->discoveryManager = $discoveryManager; } /** * @param $mimetype * @return array * @throws \Exception */ public function getUrlSrc($mimetype) { $discovery = $this->discoveryManager->get(); $loadEntities = libxml_disable_entity_loader(true); $discoveryParsed = simplexml_load_string($discovery); libxml_disable_entity_loader($loadEntities); $result = $discoveryParsed->xpath(sprintf('/wopi-discovery/net-zone/app[@name=\'%s\']/action', $mimetype)); if ($result && count($result) > 0) { return [ 'urlsrc' => (string)$result[0]['urlsrc'], 'action' => (string)$result[0]['name'], ]; } throw new \Exception('Could not find urlsrc in WOPI'); } }