Yuri364 / b2b-api-php-laravel

Laravel package for a working with B2B API service

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Laravel

B2B Api client integration for Laravel applications

Version Version Build Status Coverage Downloads count License

Install

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.

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\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}");
    }
}

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

Release date Commits since latest release

Changes log can be found here.

Support

Issues Issues

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.

About

Laravel package for a working with B2B API service

License:MIT License


Languages

Language:PHP 92.2%Language:Makefile 5.5%Language:Dockerfile 2.3%