From: Christian Weiske Date: Wed, 7 Sep 2016 05:35:41 +0000 (+0200) Subject: Load HTML as HTML, resolve relative endpoint URLs X-Git-Tag: v0.0.1~4 X-Git-Url: https://git.cweiske.de/shpub.git/commitdiff_plain/f2a5805cac945d9dbadc37ff1c7946e938a0d9f1 Load HTML as HTML, resolve relative endpoint URLs --- diff --git a/src/shpub/Config/Endpoints.php b/src/shpub/Config/Endpoints.php index 62e7c49..2e58e7a 100644 --- a/src/shpub/Config/Endpoints.php +++ b/src/shpub/Config/Endpoints.php @@ -41,39 +41,49 @@ class Config_Endpoints public function discover($server) { //TODO: discovery via link headers - $sx = simplexml_load_file($server); + $baseUrl = new \Net_URL2($server); + + $doc = new \DOMDocument(); + $doc->loadHTMLFile($server); + $sx = simplexml_import_dom($doc); if ($sx === false) { Log::err('Error loading URL: ' . $server); exit(1); } - $sx->registerXPathNamespace('h', 'http://www.w3.org/1999/xhtml'); + //$sx->registerXPathNamespace('h', 'http://www.w3.org/1999/xhtml'); $auths = $sx->xpath( - '/h:html/h:head/h:link[@rel="authorization_endpoint" and @href]' + '/html/head/link[@rel="authorization_endpoint" and @href]' ); if (!count($auths)) { - Log::err('No authorization endpoint found'); + Log::err('No authorization endpoint found at ' . $server); exit(1); } - $this->authorization = (string) $auths[0]['href']; + $this->authorization = (string) $baseUrl->resolve( + (string) $auths[0]['href'] + ); $tokens = $sx->xpath( - '/h:html/h:head/h:link[@rel="token_endpoint" and @href]' + '/html/head/link[@rel="token_endpoint" and @href]' ); if (!count($tokens)) { Log::err('No token endpoint found'); exit(1); } - $this->token = (string) $tokens[0]['href']; + $this->token = (string) $baseUrl->resolve( + (string) $tokens[0]['href'] + ); $mps = $sx->xpath( - '/h:html/h:head/h:link[@rel="micropub" and @href]' + '/html/head/link[@rel="micropub" and @href]' ); if (!count($mps)) { Log::err('No micropub endpoint found'); exit(1); } - $this->micropub = (string) $mps[0]['href']; + $this->micropub = (string) $baseUrl->resolve( + (string) $mps[0]['href'] + ); } public function load($server)