eonx-com / webhooks

The EoneoPay Webhook
BSD 3-Clause "New" or "Revised" License
1 stars 0 forks source link
library

EoneoPay Activity/Webhook Library

This library adds support for creating Activities which are then fired as webhooks to subscribers of those activities.

Installation

Use Composer to install the package in your project:

composer require eoneopay/webhooks

Usage

Inject the \EoneoPay\Webhooks\Activities\Interface\ActivityFactoryInterface service into your application where an activity needs to be created. The send method on this interface accepts an ActivityDataInterface implementation that represents a specific activity to be created.

For each of the different activities you will fire inside your application you will need to create a class that implements ActivityDataInterface.

Theory of Operation

Integration

Laravel

To integrate the package into your Laravel or Lumen you need to register the following service providers:

\EoneoPay\Webhooks\Bridge\Laravel\Providers\WebhookServiceProvider
\EoneoPay\Webhooks\Bridge\Laravel\Providers\WebhookEventServiceProvider

Any implementation of this library will need to:

use EoneoPay\Externals\Bridge\LaravelDoctrine\Extensions\ResolveTargetEntityExtension; use EoneoPay\Webhooks\Models\ActivityInterface; use EoneoPay\Webhooks\Models\WebhookRequestInterface; use EoneoPay\Webhooks\Models\WebhookResponseInterface; use EoneoPay\Webhooks\Bridge\Doctrine\Entities\Activity; use EoneoPay\Webhooks\Bridge\Doctrine\Entities\Lifecycle\Request; use EoneoPay\Webhooks\Bridge\Doctrine\Entities\Lifecycle\Response;

return [ 'managers' => [ 'default' => [ // ... 'namespaces' => [ // ... // Add the Webhooks Entities to the namespace mappings 'Eoneopay\Webhooks\Bridge\Doctrine\Entities' ], 'paths' => [ // ... // Add the Webhooks filepath to the Entity Manager \base_path('vendor/eoneopay/webhooks/src/Bridge/Doctrine/Entities') ] // ... ] ],

// ...

'extensions' => [
    // ...
    // Add the ResolveTargetEntityExtension to Doctrine
    ResolveTargetEntityExtension::class
],

// ...

'replacements' => [
    // Add replacements so Doctrine can look up entities by interface
    ActivityInterface::class => Activity::class,
    WebhookRequestInterface::class => Request::class,
    WebhookResponseInterface::class => Response::class
]

];