B2B Api client integration for Laravel applications
Require this package with composer using the following command:
$ composer require avtocod/b2b-api-php-laravel "^3.0"
Installed
composer
is required (how to install composer).
You need to fix the major version of package.
Laravel 5.5 and above uses Package Auto-Discovery, so doesn't require you to manually register the service-provider. Otherwise you must add the service provider to the providers
array in ./config/app.php
:
'providers' => [
// ...
Avtocod\B2BApi\Laravel\ServiceProvider::class,
]
If you wants to disable package service-provider auto discover, just add into your
composer.json
next lines:{ "extra": { "laravel": { "dont-discover": [ "avtocod/b2b-api-php-laravel" ] } } }
After that you should "publish" package configuration file using next command:
$ php ./artisan vendor:publish --provider='Avtocod\B2BApi\Laravel\ServiceProvider'
And configure it in the file ./config/b2b-api-client.php
.
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\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
$report_uid = $connections->default()
->userReportMake($uid, 'VIN', 'Z94CB41AAGR323020')
->first()
->getReportUid();
$this->comment("Report UID: {$report_uid}");
}
}
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
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 can be found here.
If you will find any package errors, please, make an issue in current repository.
This is open-sourced software licensed under the MIT License.