private function getMessageFromMatch(Response $response) : string { $internalErrors = libxml_use_internal_errors(true); $dom = new \DOMDocument(); $dom->loadHTML($response->getBody()); libxml_use_internal_errors($internalErrors); $xpath = new \DOMXPath($dom); return sprintf('[ [%s](%s) ] %s', $dom->getElementsByTagName('h1')->item(0)->textContent, $response->getRequest()->getUri(), $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' dc-title ')]")->item(0)->textContent); }
/** * @uses getFunctionDetails() * @uses getClassDetails() * @uses getBookDetails() * @uses getPageDetailsFromH2() * @param HttpResponse $response * @return string */ private function getMessageFromMatch(HttpResponse $response) : string { $doc = domdocument_load_html($response->getBody()); $url = $response->getRequest()->getUri(); try { $details = preg_match('#/(book|class|function)\\.[^.]+\\.php$#', $url, $matches) ? $this->{"get{$matches[1]}Details"}($doc) : $this->getPageDetailsFromPageContent($doc); return sprintf("[ [`%s`](%s) ] %s", $details[0], $url, $details[1]); } catch (NoComprendeException $e) { return sprintf("That [manual page](%s) seems to be in a format I don't understand", $url); } catch (\Throwable $e) { return 'Something went badly wrong with that lookup... ' . $e->getMessage(); } }
/** * Generates a new exception using the response to provide details. * * @param Response $response HTTP response to generate the exception from * @return AcmeException exception generated from the response body */ private function generateException(Response $response) { $body = $response->getBody(); $status = $response->getStatus(); $info = json_decode($body); $uri = $response->getRequest()->getUri(); if (isset($info->type, $info->detail)) { return new AcmeException("Invalid response: {$info->detail}.\nRequest URI: {$uri}.", $info->type); } return new AcmeException("Invalid response: {$body}.\nRequest URI: {$uri}.", $status); }