url = $url; $this->client = new Client([ 'timeout' => 60, 'verify' => false, 'headers' => [ 'user-agent' => 'Dalvik/2.1.0 (Linux; U; Android 6.0.1; D5803 Build/MOB30M.Z1)', ], ]); } /** * @param string $url * * @return \App\Parser|null * @throws \App\Exceptions\UnknownParser */ public static function factory(string $url): ?Parser { $parsers = Config::get('parser.parsers', []); foreach ($parsers as $domain => $parser) { if (false !== strpos($url, $domain)) { return new $parser($url); } } throw new UnknownParser(sprintf( 'Can\'t find an url in «%s» file with the following URL «%s». Please update the file accordingly.', 'parser.php', $url )); } /** * @return \App\ParsedHome */ abstract public function parse(): ParsedHome; /** * @param int $score * * @return string */ protected function calculateDPE($score) { if (empty($score)) { return 'Inconnu'; } if ($score <= 50) { return 'A'; } if ($score >= 51 && $score <= 90) { return 'B'; } if ($score >= 91 && $score <= 150) { return 'C'; } if ($score >= 151 && $score <= 230) { return 'D'; } if ($score >= 231 && $score <= 330) { return 'E'; } if ($score >= 331 && $score <= 450) { return 'F'; } if ($score > 450) { return 'G'; } return 'Inconnu'; } /** * @param $score * * @return string */ protected function calculateGES($score) { if (empty($score)) { return 'Inconnu'; } if ($score <= 5) { return 'A'; } if ($score >= 6 && $score <= 10) { return 'B'; } if ($score >= 11 && $score <= 20) { return 'C'; } if ($score >= 21 && $score <= 35) { return 'D'; } if ($score >= 36 && $score <= 55) { return 'E'; } if ($score >= 56 && $score <= 80) { return 'F'; } if ($score > 80) { return 'G'; } return 'Inconnu'; } }