100yuristov / sto-yuristov-client
There is no license information available for the latest version (v2.1.0) of this package.
API client for 100yuristov.com service
v2.1.0
2026-03-15 09:31 UTC
Requires
- php: ^8.2
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
Requires (Dev)
- nyholm/psr7: ^1.8
- php-http/discovery: ^1.0
- php-http/mock-client: ^1.0
- phpunit/phpunit: ^10.5
Suggests
- guzzlehttp/guzzle: Popular PSR-18 compatible HTTP client
- php-http/discovery: Auto-discover installed PSR-18 clients
- php-http/httplug: Plugin system for retries, logging, caching
- php-http/retry-plugin: Retry failed requests automatically
- symfony/http-client: Symfony PSR-18 HTTP client
This package is auto-updated.
Last update: 2026-03-15 09:33:16 UTC
README
Установка
composer require 100yuristov/sto-yuristov-client
Пакет не привязан к конкретной HTTP-библиотеке. Вам нужно установить любой PSR-18-совместимый HTTP-клиент. Например, Guzzle:
composer require guzzlehttp/guzzle php-http/guzzle7-adapter
Или Symfony HttpClient:
composer require symfony/http-client nyholm/psr7
Базовое использование
С Guzzle
use GuzzleHttp\Client as GuzzleClient; use Http\Adapter\Guzzle7\Client as GuzzleAdapter; use GuzzleHttp\Psr7\HttpFactory; use StoYuristov\StoYuristovClient; use StoYuristov\StoYuristovLead; $adapter = GuzzleAdapter::createWithConfig(['timeout' => 5]); $factory = new HttpFactory(); $client = new StoYuristovClient( appId: ВАШ_APP_ID, secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ', httpClient: $adapter, requestFactory: $factory, streamFactory: $factory, );
С Symfony HttpClient
use Symfony\Component\HttpClient\Psr18Client; use StoYuristov\StoYuristovClient; $psr18 = new Psr18Client(); $client = new StoYuristovClient( appId: ВАШ_APP_ID, secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ', httpClient: $psr18, requestFactory: $psr18, streamFactory: $psr18, );
Отправка лида
use StoYuristov\StoYuristovLead; use StoYuristov\Exception\ValidationException; use StoYuristov\Exception\ApiException; $lead = new StoYuristovLead( name: 'Иван Иванов', phone: '+79001234567', email: 'ivan@example.com', town: 'Москва', type: StoYuristovLead::TYPE_QUESTION, question: 'Как составить договор аренды?', price: 35, // опционально, если включён приём цены лида ); try { $response = $client->sendLead($lead); echo $response->message; // описание ответа echo $response->leadId; // ID созданного лида } catch (ValidationException $e) { // Ошибки валидации на стороне клиента print_r($e->getErrors()); } catch (ApiException $e) { // Ошибка API или HTTP echo $e->getMessage(); echo $e->getHttpStatusCode(); } catch (\Psr\Http\Client\ClientExceptionInterface $e) { // Ошибка транспорта (сеть недоступна и т.п.) echo $e->getMessage(); }
Типы лида
| Константа | Значение | Описание |
|---|---|---|
StoYuristovLead::TYPE_QUESTION |
1 |
Вопрос (по умолчанию) |
StoYuristovLead::TYPE_CALL |
2 |
Запрос обратного звонка |
Тестовый режим
В тестовом режиме лиды проверяются, но не сохраняются.
$client = new StoYuristovClient( appId: ВАШ_APP_ID, secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ', httpClient: $httpClient, requestFactory: $requestFactory, streamFactory: $streamFactory, testMode: true, );
Для тестирования против локального окружения можно передать кастомный baseUrl:
$client = new StoYuristovClient( appId: ВАШ_APP_ID, secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ', httpClient: $httpClient, requestFactory: $requestFactory, streamFactory: $streamFactory, baseUrl: 'http://100yuristov.local/api/', testMode: true, );
Повторные попытки и таймауты
Библиотека не навязывает конкретный механизм ретраев — это задача HTTP-клиента. Пример с php-http/retry-plugin:
composer require php-http/httplug php-http/retry-plugin php-http/guzzle7-adapter
use Http\Client\Common\PluginClient; use Http\Client\Common\Plugin\RetryPlugin; use Http\Adapter\Guzzle7\Client as GuzzleAdapter; use GuzzleHttp\Client as GuzzleClient; use GuzzleHttp\Psr7\HttpFactory; $guzzle = new GuzzleClient(['timeout' => 5, 'connect_timeout' => 2]); $adapter = new GuzzleAdapter($guzzle); $factory = new HttpFactory(); $retryPlugin = new RetryPlugin(['retries' => 3]); $pluginClient = new PluginClient($adapter, [$retryPlugin]); $client = new StoYuristovClient( appId: ВАШ_APP_ID, secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ', httpClient: $pluginClient, requestFactory: $factory, streamFactory: $factory, );
Подпись запроса
Подпись вычисляется автоматически перед каждой отправкой, указывать её вручную не нужно.
Запуск тестов локально
composer install
make test