ingoldsby/laravel-dashboard-display-webhook-tile

A tile to display webhooks for Laravel Dashboard

1.0.0 2020-06-26 20:37 UTC

This package is auto-updated.

Last update: 2024-10-27 06:08:02 UTC


README

Latest Version on Packagist Total Downloads

This tile can be used on the Laravel Dashboard to display a webhook from your database.

Screenshot

Installation

You can install the package via composer:

composer require ingoldsby/laravel-dashboard-display-webhook-tile

This package uses spatie/laravel-webhook-client as the webhook provider.

Usage

In the dashboard config file, you must add this configuration in the tiles key. You can add a configuration in the configurations key per Webhook tile that you want to display. In this example, the webhook_calls table has been amended to capture the headers of the incoming request. Due to the formatting of the request, an offset is required (in this case, 0) to get the correct item.

// in config/dashboard.php

return [
    // ...
    'tiles' => [
        'webhook' => [
            'configurations' => [
                'default' => [
                    'column' => 'headers',
                    'value' => 'x-shopify-topic',
                    'offset' => 0,
                ]
            ],
            'refresh_interval_in_seconds' => 60,
        ]
    ],
];

This example shows multiple configurations, with the second one named payload, matching the default column in the webhook_calls table. Note: the default column in this example does not need an offset so it is not included.

// in config/dashboard.php

return [
    // ...
    'tiles' => [
        'webhook' => [
            'configurations' => [
                'default' => [
                    'column' => 'headers',
                    'value' => 'x-shopify-topic',
                    'offset' => 0,
                ],
                'payload' => [
                    'column' => 'payload',
                    'value' => 'id',
                ],
            ],
            'refresh_interval_in_seconds' => 60,
        ]
    ],
];

In app\Console\Kernel.php you should schedule the \Ingoldsby\DisplayWebhookTile\Commands\FetchDisplayWebhookCommand to run. You can decide the frequency of running the command.

// in app/console/Kernel.php

protected function schedule(Schedule $schedule)
{
    // ...
    $schedule->command(\Ingoldsby\DisplayWebhookTile\Commands\FetchDisplayWebhookCommand::class)->everyMinute();
}

To display webhook details of another configuration, simply add the name of the configuration as an arugment.

// in app/console/Kernel.php

protected function schedule(Schedule $schedule)
{
    // ...
    $schedule->command(\Ingoldsby\DisplayWebhookTile\Commands\FetchDisplayWebhookCommand::class, ['alternate-configuration-name'])->everyMinute();
}

In your dashboard view you can use the tile:

  • livewire:display-webhook-tile
<x-dashboard>
    <livewire:display-webhook-tile position="a1" />
</x-dashboard>

To display webhook details of another configuration, pass the name of the configuration to the configuration-name prop.

<x-dashboard>
    <livewire:display-webhook-tile position="a1" configuration-name="alternate-configuration-name" />
</x-dashboard>

The default title of the tile will be Latest Webhook unless you pass a string using the title prop.

<x-dashboard>
    <livewire:display-webhook-tile position="a1" configuration-name="alternate-configuration-name" title="Title of tile" />
</x-dashboard>

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email instead of using the issue tracker.

Support Spatie

I have learnt a lot from Spatie's various packages, including Mailcoach, and would recommend you check them out if you want to know more.

Learn how to create a package like theirs, by watching Spatie's premium video course:

Laravel Package training

Spatie invest a lot of resources into creating best in class open source packages. You can support them by buying one of their paid products.

Credits

License

The MIT License (MIT). Please see License File for more information.