avtocod / b2b-api-php-laravel
Laravel package for a working with B2B API service
Installs: 22 140
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 1
Forks: 6
Open Issues: 0
Requires
- php: ^8.1
- avtocod/b2b-api-php: ^4.1
- illuminate/config: ^10.0
- illuminate/container: ^10.0
- illuminate/contracts: ^10.0
- illuminate/events: ^10.0
- illuminate/support: ^10.0
Requires (Dev)
- ext-json: *
- avto-dev/guzzle-url-mock: ^1.5
- laravel/laravel: ^10.0
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
Suggests
- avtocod/specs: Avtocod project public specifications.
README
B2B Api client integration for Laravel applications
Install
Require this package with composer using the following command:
$ composer require avtocod/b2b-api-php-laravel "^4.0"
Installed
composer
is required (how to install composer).
You need to fix the major version of package.
After that you should "publish" package configuration file using next command:
$ php ./artisan vendor:publish --provider='Avtocod\B2BApi\Laravel\ServiceProvider'
And modify ./config/b2b-api-client.php
.
Usage
This package provides:
- Connections factory (
ConnectionsFactoryInterface
) - B2B API client factory (configuration for it loads from published configuration file); - Report types repository (
RepositoryInterface
) - single entry-point for getting access to the report types information;
In any part of your application you can resolve their implementations. For example, in artisan command:
<?php declare(strict_types = 1); namespace App\Console\Commands; use Avtocod\B2BApi\Params\UserReportMakeParams; use Avtocod\B2BApi\Laravel\ReportTypes\RepositoryInterface; use Avtocod\B2BApi\Laravel\Connections\ConnectionsFactoryInterface; class SomeCommand extends \Illuminate\Console\Command { /** * The console command name. * * @var string */ protected $name = 'some:command'; /** * Execute the console command. * * @param RepositoryInterface $report_types * @param ConnectionsFactoryInterface $connections * * @return void */ public function handle(RepositoryInterface $report_types, ConnectionsFactoryInterface $connections): void { $uid = $report_types->default()->getUid(); // Get default report type UID // Create a parameter object for a request to make a report $report_make_params = UserReportMakeParams($uid, 'VIN', 'Z94CB41AAGR323020') $report_uid = $connections->default() ->userReportMake($report_make_params) ->first() ->getReportUid(); $this->comment("Report UID: {$report_uid}"); } }
Events
Also this package proxying B2B Api client events into Laravel events dispatcher. So, feel free for writing own listeners like:
<?php declare(strict_types = 1); namespace App\Listeners; use Psr\Log\LoggerInterface; use Psr\Http\Message\ResponseInterface; use Avtocod\B2BApi\Events\RequestFailedEvent; class LogFailedB2bApiRequestListener { /** * @var LoggerInterface */ protected $logger; /** * Create a new listener instance. * * @param LoggerInterface $logger */ public function __construct(LoggerInterface $logger) { $this->logger = $logger; } /** * @param RequestFailedEvent $event * * @return void */ public function handle(RequestFailedEvent $event): void { $this->logger->warning('Request to the Avtocod B2B API Failed', [ 'request_uri' => $event->getRequest()->getUri(), 'response_code' => $event->getResponse() instanceof ResponseInterface ? $event->getResponse()->getStatusCode() : null ]); } }
More information about events listeners can be found here
Testing
For package testing we use phpunit
framework and docker-ce
+ docker-compose
as develop environment. So, just write into your terminal after repository cloning:
$ make build $ make latest # or 'make lowest' $ make test
Changes log
Changes log can be found here.
Support
If you will find any package errors, please, make an issue in current repository.
License
This is open-sourced software licensed under the MIT License.