roskovynskyi / ubki
UBKI Integration for PHP
Requires
- php: >=7.4
- ext-simplexml: *
- guzzlehttp/guzzle: ^6.3
- horat1us/environment-config: ^1.2
- myclabs/php-enum: ^1.5
- nesbot/carbon: ^2.24 || ^1.33
- psr/log: ^1.0
- psr/simple-cache: ^1.0
Requires (Dev)
- chillerlan/php-cache: ^1.0
- gamez/psr-testlogger: ^2.0
- phpunit/phpunit: ^9.1
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2025-03-05 01:58:30 UTC
README
Установка
используя composer:
composer require roskovynskyi/ubki
Конфигурация
Для конфигурирования нужного сервиса используется соответствующий ConfigInterface
:
Push (экспорт): Push\ConfigInterface
Pull (импорт): Pull\ConfigInterface (в разработке)
Также для каждого сервиса требуется провайдер Authorization\Provider
для авторизации.
Config
На выгрузку данных / отправку запроса в реестр:
<?php use Wearesho\Bobra\Ubki; $config = new Ubki\Push\Config( 'username', 'password', $mode = Ubki\Authorization\ConfigInterface::MODE_TEST // или MODE_PRODUCTION );
На импорт данных (в разработке):
<?php use Wearesho\Bobra\Ubki; $config = new Ubki\Pull\Config( 'username', 'password', $mode = Ubki\Authorization\ConfigInterface::MODE_TEST // или MODE_PRODUCTION );
EnvironmentConfig
Для каждого сервиса Push
/Pull
имплементирован свой EnvironmentConfig
,
который будет подтягивать переменные из окружения.
Если же они по стандарту не установлены,
то они будут взяты по дефолтному значению из имплементированного им интерфейса ConfigInterface
.
Основные переменные (зависят от типа сервиса):
Сервис для экспорта:
Environment variable | Required | Default value in production mode | Default value in test mode | Value type |
---|---|---|---|---|
UBKI_PUSH_USERNAME | yes | string | ||
UBKI_PUSH_PASSWORD | yes | string | ||
UBKI_PUSH_MODE | no | 0 | 0 | integer (0...1) |
UBKI_PUSH_AUTH_URL | no | Auth production url | Auth test url | string (url format) |
UBKI_PUSH_URL | no | string (url format) | ||
UBKI_PUSH_REGISTRY_URL | no | Registry production url | Registry test url | string (url format) |
Сервис для импорта:
Environment variable | Required | Default value in production mode | Default value in test mode | Value type |
---|---|---|---|---|
UBKI_PULL_USERNAME | yes | string | ||
UBKI_PULL_PASSWORD | yes | string | ||
UBKI_PULL_MODE | no | 0 | 0 | integer (0...1) |
UBKI_PULL_AUTH_URL | no | Auth production url | Auth test url | string (url format) |
UBKI_PULL_URL | no | string (url format) |
Пример использования:
Рекомендуется использовать контейнер внедрения зависимостей.
Пример отправки запроса в реестр для получения статуса об отправленных отчетах:
<?php use Wearesho\Bobra\Ubki; $authProvider = new Ubki\Authorization\Provider( new \GuzzleHttp\Client(), // любой клиент, имплементирующий \GuzzleHttp\ClientInterface new Psr\Log\NullLogger() // любой логгер, имплементирующий \Psr\Log\LoggerInterface ); $service = new Ubki\Push\Registry\Service( new Ubki\Push\EnvironmentConfig("UBKI_"), $authProvider, new \GuzzleHttp\Client(), // любой клиент, имплементирующий \GuzzleHttp\ClientInterface new Psr\Log\NullLogger() // любой логгер, имплементирующий \Psr\Log\LoggerInterface ); $request = new Ubki\Push\Registry\Rep\Request(...); $response = $service->send($request);
Библиотека находится в разработке
-
Авторизация (Authorization) Документация API
-
Получение данных (Pull)
-
Отправка данных (Push)
-
Отправка запроса на статусы передачи (Push\Registry)
Требования
- PHP >=7.1
- Реализация PSR-16 Simple Cache для сохранения ключей авторизации
Разработка
Требования к написанию кода в репозитории:
- Все изменения загружаются посредством создания отдельного Pull Request
- Весь код должен соответствовать PSR-2.
Для проверки рекомендуется использовать
composer lint
. Для исправления форматированияcomposer phpcbf
. - Для любого функционала, кроме зависимостей, должны быть написаны тесты с покрытием 100%
- Для сетевых запросов необходимо использовать
guzzlehttp/guzzle
- Для работы со временем необходимо использовать
nesbot/carbon
- Все изменения затрагивающие публичные интерфейсы, добавленные в новой версии должны быть занесены в Changelog
- Все классы тестов должны содержать
@internal
в doc блоке