alfred-nutile-inc / webhooks
快速在系统中包含 webhooks 的包
v2.0
2015-08-05 16:39 UTC
Requires
- php: >=5.4.0
- fzaninotto/faker: dev-master
- laravel/framework: 5.0.*
Requires (Dev)
- guzzlehttp/guzzle: >=4.0
- mockery/mockery: ~0.8
- phpunit/phpunit: ~4.0
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 和环境
备注
在单独使用此包之前,请先使用此测试