cerpus/edlib-resource-kit-laravel

Integrate Edlib Resource Kit with Laravel

v0.6.0 2022-12-08 14:18 UTC

README

codecov

Integrates Edlib Resource Kit with Laravel.

Requirements

  • PHP 8.0, 8.1, or 8.2
  • Laravel 8, 9, or 10
  • A PSR-18 compatible HTTP client (e.g. Guzzle 7)
  • PSR-17 compatible HTTP message factories (included with Guzzle 7)

Installation

composer require cerpus/edlib-resource-kit-laravel

If using Guzzle 6, you will also need some adapters:

composer require cerpus/edlib-resource-kit-laravel \
    http-interop/http-factory-guzzle \
    php-http/guzzle6-adapter

Configuration

First publish the configuration:

php artisan vendor:publish --provider="Cerpus\EdlibResourceKitProvider\EdlibResourceKitServiceProvider"

For asynchronous publishing, it is required to configure RabbitMQ. Edit config/edlib-resource-kit.php, or provide the expected environment variables to match your infrastructure.

If using cerpus/laravel-rabbitmq-pubsub, you can reuse its configuration:

<?php

return [
    'pub-sub' => Cerpus\PubSub\PubSub::class,
];

For synchronous publishing, it is sufficient to provide the following config:

<?php

return [
    'synchronous-resource-manager' => true,
];

Usage

Automatic publishing of resources

Given a model that implements EdlibResource:

use Cerpus\EdlibResourceKit\Contract\EdlibResource;
use Cerpus\EdlibResourceKitProvider\Traits\PublishToEdlib;
use Illuminate\Database\Eloquent\Model;

class Article extends Model implements EdlibResource
{
    use PublishToEdlib;
}

Or a model that implements ConvertableToEdlibResource:

use Cerpus\EdlibResourceKit\Contract\EdlibResource;
use Cerpus\EdlibResourceKitProvider\Contract\ConvertableToEdlibResource;
use Cerpus\EdlibResourceKitProvider\Traits\PublishToEdlib;
use Illuminate\Database\Eloquent\Model;

class Article extends Model implements EdlibResource
{
    use PublishToEdlib;

    public function toEdlibResource(): EdlibResource
    {
        // Return your own data object
        return new ArticleEdlibResource(/* ... */);
    }
}

With the PublishToEdlib trait used, Edlib will now be notified upon changes to the resource.

License

This package is released under the GNU General Public License 3.0. See the LICENSE file for more information.