快速在系统中包含 webhooks 的包

v2.0 2015-08-05 16:39 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:44:58 UTC


README

安装

设置提供商

'AlfredNutileInc\CoreApp\Webhooks\WebhooksServiceProvider'

运行

php artisan vendor:publish

发布镜像前...

在迁移之前继续阅读...

添加到您的 DatabaseSeeder.php

#database/seeds/DatabaseSeeder.php
/**
 * Used by Webhooks to prevent seed issues
 */
Config::set('seeding', true);

和 Webhooks

#database/seeds/DatabaseSeeder.php
Config::set('seeding', true);
$this->call('AppSeeder');
$this->call('WebhooksSeeder');

并将 vendors/alfred-nutile-inc/webhooks/src/CoreApp/Webhooks/database/seeds/WebhooksSeeder.php 复制到 database/seeds

如果您想添加种子数据,请将其放置在那里。其中包含一些示例。

@TODO 删除种子步骤,将其作为发布的一部分

最终看起来会是这样

#database/seeds/DatabaseSeeder.php

public function run()
{
	Model::unguard();
	if(Config::get('database.default') != 'sqlite') {
		DB::statement('SET FOREIGN_KEY_CHECKS=0;');
	}

	/**
	 * Used by Webhooks to prevent seed issues
	 */
	Config::set('seeding', true);
	$this->call('AppSeeder');
	$this->call('WebhooksSeeder');

	Config::set('seeding', false);
	if(Config::get('database.default') != 'sqlite') {
		DB::statement('SET FOREIGN_KEY_CHECKS=1;');
	}
}

只是加快了种子工作,因为事件被忽略

现在您可以迁移了

php artisan migrate

将命令添加到您的 Kernal.php

    protected $commands = [
        'AlfredNutileInc\CoreApp\Webhooks\Console\WebhookAddCommand',
        'AlfredNutileInc\CoreApp\Webhooks\Console\WebhookDeleteCommand'
    ];

数据库中添加和删除 webhook 的命令

添加

php artisan core-app:webhook-add http://full.com/post/path 'event.name In Quotes if needed'

删除

php artisan core-app:webhook-delete

+--------------------------------------+-----------------------------------------------------------+---------------------------------------------------------+
| id                                   | url                                                       | event                                                   |
+--------------------------------------+-----------------------------------------------------------+---------------------------------------------------------+
| 1bc89184-853b-4ac8-873e-294d7be06ed4 | http://foo.com                                            | eloquent.updated: ScreenShooter\Models\ScreenshooterJob |
| bc4de4e1-b90a-401f-8643-0f5fce4ff00b | http://foo.com                                            | foo                                                     |
| mock-1-webhook                       | https://approve-v2.dev:443/callbacks/screenshot_jobs      | eloquent.updated: ScreenShooter\Models\ScreenshooterJob |
| mock-2-webhook                       | https://approve-v2.dev:443/callbacks/screenshot_jobs_test | eloquent.updated: ScreenShooter\Models\ScreenshooterJob |
+--------------------------------------+-----------------------------------------------------------+---------------------------------------------------------+

要查看所有可以删除的内容

php artisan core-app:webhook-delete foo-uuid

要删除该 uuid

工作原理

在事件期间,它将在数据库中查找监听器,如果找到它们,它将把结果发送到那个回调。

这是 缓存的,所以它只在有人添加新的 webhook 来监听之前击中数据库一次。

回调是异步完成的,因此延迟不应过长。

添加更多要监听的事件

目前,此包仅监听 public $listening = ['eloquent.*'];,然后搜索 Webhooks 表中的事件回调。

您可以创建自己的 WebhooksWrapper 类,并扩展 WebhooksServiceProvider,添加更多事件。然后在上面的 Provider 上注册您的 Provider,它们也会被添加。

例如,这扩展了主 Provider 以监听其他事件

<?php

namespace App\Providers;

use AlfredNutileInc\CoreApp\Webhooks\WebhooksServiceProvider;

class WebhookExtendedProvider extends WebhooksServiceProvider
{

    public $listening = [
        'eloquent.*',
        '\\App\\Events\\CampaignMadeActive',
        '\\App\\Events\\MetaMasterUpdated'
    ];
}

返回值

  • body 将包含 model 或事件对象的 json 编码和序列化、url 和环境

备注

在单独使用此包之前,请先使用此测试