juststeveking / laravel-buttondown-email
使用buttondown.email API管理Laravel中的通讯录
此包的规范仓库似乎已消失,因此该包已被冻结。
0.1.0
2021-05-14 17:06 UTC
Requires
- php: ^8.0
- illuminate/support: ^8.41
- juststeveking/uri-builder: ^1.1
Requires (Dev)
- guzzlehttp/guzzle: ^7.3
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.17
- phpunit/phpunit: ^9.5
README
一个用于与Buttondown Email API一起工作的Laravel包装器,让您轻松管理订阅者。如果您想自己阅读API文档,您可以在这里找到它。
到目前为止,我只集成了订阅者端点,因为这是我目前需要的全部。请随意提交其他PR!
安装
您可以通过Composer安装此包
composer require juststeveking/laravel-buttondown-email
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="JustSteveKing\Laravel\ButtonDownEmail\ButtonDownServiceProvider" --tag="config"
这是已发布配置文件的内容
return [ 'api' => [ 'key' => env('BUTTONDOWN_KEY'), 'url' => env('BUTTONDOWN_URL', 'https://api.buttondown.email/v1'), 'timeout' => env('BUTTONDOWN_TIMEOUT', 10), 'retry' => [ 'times' => env('BUTTONDOWN_RETRY_TIMES', null), 'milliseconds' => env('BUTTONDOWN_RETRY_MILLISECONDS', null), ], ] ];
用法
这个库旨在易于使用,并且可以无缝集成到Laravel中。
该包将为您安装一个服务提供者,这意味着您只需从容器中解析出Client,然后就可以开始使用了。
请注意,由于这是一个Laravel包,我已经利用Laravel Validator在将请求发送到API之前验证请求。如果失败,这将抛出一个基本的异常。订阅规则如下
$rules = [ 'email' => ['required', 'email:rfc,dns'], 'metadata' => ['nullable', 'array'], 'notes' => ['nullable', 'string'], 'referrer_url' => ['nullable', 'string', 'max:500'], 'tags' => ['nullable', 'array'], ];
列出所有订阅者
use JustSteveKing\Laravel\ButtonDownEmail\Client; class SubscribersController extends Controler { public function __construct( protected Client $service, ) {} public function __invoke(Request $request) { // This will return a Collection of subscribers $subscribers = $this->service->subscribers()->get(); } }
创建新的订阅者
use JustSteveKing\Laravel\ButtonDownEmail\Client; class SubscribeController extends Controler { public function __construct( protected Client $service, ) {} public function __invoke(Request $request) { $subscriber = $this->service->subscribers()->create([ 'email' => $request->get('email'), // required 'metadata' => $request->get('metadata', null), // optional 'notes' => $request->get('notes', null), // optional 'referrer_url' => $request->get('referrer_url', null), // optional 'tags' => $request->get('tags', null), // optional ]); } }
删除订阅者
use JustSteveKing\Laravel\ButtonDownEmail\Client; class DeleteSubscriberController extends Controler { public function __construct( protected Client $service, ) {} public function __invoke(Request $request) { // This will return true if successful, otherwise throw an exception $deleted = $this->service->subscribers()->delete( id: $request->get('id'), ); } }
检索订阅者
use JustSteveKing\Laravel\ButtonDownEmail\Client; class FetchSubscriberController extends Controler { public function __construct( protected Client $service, ) {} public function __invoke(Request $request) { $subscriber = $this->service->subscribers()->find( id: $request->get('id'), ); } }
更新订阅者
use JustSteveKing\Laravel\ButtonDownEmail\Client; class UpdateSubscriberController extends Controler { public function __construct( protected Client $service, ) {} public function __invoke(Request $request) { $subscriber = $this->service->subscribers()->update( attributes: [ 'email' => $request->get('email'), // This is required for creating and updating 'notes' => 'Here is a note from my controller', ], id: $request->get('id'), ); } }
列出所有未订阅者
use JustSteveKing\Laravel\ButtonDownEmail\Client; class UnsubscribersController extends Controler { public function __construct( protected Client $service, ) {} public function __invoke(Request $request) { // This will return a Collection of unsubscribers $subscribers = $this->service->unsubscribers()->get(); } }
检索未订阅者
use JustSteveKing\Laravel\ButtonDownEmail\Client; class FetchUnsubscriberController extends Controler { public function __construct( protected Client $service, ) {} public function __invoke(Request $request) { $subscriber = $this->service->unsubscribers()->find( id: $request->get('id'), ); } }
测试
要了解如何使用这部分,请遵循Laravel文档中的测试Http Client。
运行单元测试
./vendor/bin/testbench package:test
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现任何安全相关的问题,请通过电子邮件juststevemcd@gmail.com联系,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 获取更多信息。
