Начало обработки по ссылкам

This commit is contained in:
2024-09-04 16:12:03 +03:00
parent 48b4d6cccf
commit 04374fef40
10 changed files with 633 additions and 103 deletions

View File

@ -1,12 +1,8 @@
<?php
namespace ContingentParser\Http;
use ContingentParser\Printer;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Exception\ConnectException;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ServerException;
use GuzzleHttp\Psr7\Exception\MalformedUriException;
use GuzzleHttp\TransferStats;
final class HttpClientFacade
@ -17,10 +13,8 @@ final class HttpClientFacade
public function __construct() {}
/**
* Обработка численности обучающихся
* @param string $url
* URL сайта
* @param array $site
* Идентификатор организации, и базовый URL
* @param string $url URL сайта
* @param array $site Идентификатор организации, и базовый URL
* @return string
*/
public function processEducationContingentSites(
@ -35,24 +29,19 @@ final class HttpClientFacade
$redirectUrl = $stats->getEffectiveUri();
}
]);
print("Redirect $url -> $redirectUrl" . PHP_EOL);
Printer::println("Redirect $url -> $redirectUrl");
$url .= substr($url, -1) == '/' ? '':'/';
$url .= "sveden/education/";
print("Parsing for $url" . PHP_EOL);
$url .= "sveden/education/study";
Printer::println("Parsing for $url");
$response = $client->get($url);
$httpCode = $response->getStatusCode();
print("\033[94mHTTP-code: $httpCode\033[0m\n");
Printer::println("HTTP-code: $httpCode", 'blue');
$html = $response->getBody()->getContents();
} catch (ClientException
| RequestException
| ConnectException
| ServerException
| MalformedUriException $e
} catch (\Exception $e
) {
print("\033[91mHTTP-code: ". $e->getCode(). "\033[0m\n");
Printer::println("HTTP-code: ".$e->getCode(), 'red');
$html = $this->handleException($url, $site);
} finally {
return $html;
@ -60,23 +49,24 @@ final class HttpClientFacade
}
/**
* Обработка исключения
* Повторная попытка спомощью CurlHelper
* @param string $url
* URL сайта
* Повторная попытка с помощью CurlHelper
* @param string $url URL сайта
* @param array $site
* @return string
*/
private function handleException(string $url, array $site) : string
private function handleException(string $url, array $site): string
{
$curlHelper = new CurlHelper($url, $site);
return $curlHelper->getContent();
$html = $curlHelper->getContent();
$curlHelper->reportError();
return $html;
}
/**
* Создать клиента с базовым URL
* @param string $url
* @return \GuzzleHttp\Client
*/
private function createClient(string $url) : Client
private function createClient(string $url): Client
{
$this->config = $this->config() + ["base_uri" => $url];
return new Client($this->config);