ourgold / exchange
Tools to communicate with external services
Requires
- php: ^7.2|^8.0
- ext-json: *
- laravel-notification-channels/telegram: ^4.0 || ^5.0
- laravel/framework: ^5.5 || ^6 || ^7 || ^10 || ^11
README
Установка
composer require ourgold/exchange:^1.0
Note: (при необходимости можно с осторожностью добавить ключ --ignore-platform-reqs
)
После завершения установки выполнить команду
php artisan vendor:publish --provider="Ourgold\Exchange\ExchangeServiceProvider" --tag="config"
И обязательно отредактировать параметр api_superclass
, указав нужный суперкласс заместо стандартного.
После настройки, выполнить миграцию
php artisan migrate
И добавить команду в планировщик app/Console/Kernel.php
метод schedule
$schedule->command('exchange:process-queue')->everyMinute();
Использование
Для использования необходимо реализовать свою версию класса \Ourgold\Exchange\Services\ExternalAPIs
, добавив в него методы, возвращающие инстансы классов для работы с внешними API.
После чего для постановки запросов в очередь необходимо вызвать метод \Ourgold\Exchange\Services\ExchangeService::queue()
Первый аргумент - массив имён методов, которые вызываются друг за другом
(каждый последующий вызывается на результате вызова предыдущего метода)
Второй аргумент - массив аргументов, передаваемых последнему методу из цепочки
Третий аргумент - callback-класс с реализованным методом __invoke
, куда передастся результат вызова последнего метода в цепочке
Пример 1
\Ourgold\Exchange\Services\ExchangeService::queue(
[
'exampleAPI',
'users',
'get',
],
null,
\App\TestCallbackHandler::class,
);
Цепочка вызова:
(new \Ourgold\Exchange\Services\ExternalAPIsTest())->exampleAPI()->users()->get();
В данном примере сначала вызовется метод exampleAPI()
в классе \Ourgold\Exchange\Services\ExternalAPIs
, который возвращает инстанс класса ExternalAPIExample
.
Далее вызовется метод users()
класса ExternalAPIExample
и наконец метод get()
Аргументы никакие передаваться не будут (второй параметр)
Результат вызова передастся в callback-класс \App\TestCallbackHandler
(в magic-метод __invoke
)
Пример 2
\Ourgold\Exchange\Services\ExchangeService::queue(
[
'exampleAPI',
'login',
],
['test_login', 'test_password'],
\App\TestCallbackHandler::class,
);
Цепочка вызова:
(new \Ourgold\Exchange\Services\ExternalAPIsTest())->exampleAPI()->login('test_login', 'test_password');
В данном примере сначала вызовется метод exampleAPI()
в классе \Ourgold\Exchange\Services\ExternalAPIs
, который возвращает инстанс класса ExternalAPIExample
.
Далее вызовется метод login($login, $password)
класса ExternalAPIExample
с аргументами test_login
и test_password
Результат вызова передастся в callback-класс \App\TestCallbackHandler
(в magic-метод __invoke
)