getsendstack / laravel-sendstack
一个用于与SendStack API协同工作的Laravel包
1.0.0
2023-05-24 09:39 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^9.25|^10.0
- juststeveking/http-status-code: ^3.0
- juststeveking/laravel-data-object-tools: ^1.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.4
- laravel/pint: ^1.1
- nunomaduro/larastan: ^2.1
- orchestra/testbench: ^7.0|^8.0
- pestphp/pest: ^1.21|^2.0
README
安装
您可以通过composer安装此包
composer require getsendstack/laravel-sendstack
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="sendstack-config"
设置
要开始使用此包,您需要添加以下环境变量:
SENDSTACK_URL
- 可选,默认值已设置,因此通常不需要SENDSTACK_TOKEN
- 您可以从getSendStack账户生成此令牌。
包将在其配置中拾取这些值,并在解析Client
实例时使用这些值。
使用方法
您可以通过注入SendStack\Laravel\Http\Client
到方法中来使用此包以实例化客户端
declare(strict_types=1); use App\Models\Subscriber; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use SendStack\Laravel\Contracts\ClientContract; namespace App\Jobs\SendStack; class SyncSubscribers implements ShouldQueue { use Queueable; use Dispatchable; use SerializesModels; use InteractsWithQueue; public function handle(ClientContract $client): void { foreach ($client->subscribers()->all() as $subscriber) { Subscriber::query()->updateOrCreate( attributes: ['email' => $subscriber->email], values: $subscriber->toArray(), ); } } }
或者您可以使用外观来帮助您
declare(strict_types=1); use App\Models\Subscriber; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use SendStack\Laravel\Facades\SendStack; namespace App\Jobs\SendStack; class SyncSubscribers implements ShouldQueue { use Queueable; use Dispatchable; use SerializesModels; use InteractsWithQueue; public function handle(): void { foreach (SendStack::subscribers()->all() as $subscriber) { Subscriber::query()->updateOrCreate( attributes: ['email' => $subscriber->email], values: $subscriber->toArray(), ); } } }
获取订阅者列表
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->subscribers()->all(); /** * Using the Facade */ SendStack::subscribers()->all();
获取单个订阅者
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->subscribers()->get( query: '1234-1234-1234-1234' // This can be either the subscribers UUID or their Email Address ); /** * Using the Facade */ SendStack::subscribers()->get( query: '1234-1234-1234-1234', // This can be either the subscribers UUID or their Email Address );
创建新的订阅者
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; use SendStack\Laravel\Http\Requests\SubscriberRequest; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->subscribers()->create( request: new SubscriberRequest( email: 'contact@getsendstack.com', // Required firstName: 'Send', // Optional lastName: 'Stack', // Optional tags: [ 'Client', 'Awesome', ], // Optional optIn: true, // Optional ), ); /** * Using the Facade */ SendStack::subscribers()->create( request: new SubscriberRequest( email: 'contact@getsendstack.com', // Required firstName: 'Send', // Optional lastName: 'Stack', // Optional tags: [ 'Client', 'Awesome', ], // Optional optIn: true, // Optional ), );
更新订阅者
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; use SendStack\Laravel\Http\Requests\SubscriberRequest; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->subscribers()->update( uuid: '1234-1234-1234-1234', request: new SubscriberRequest( email: 'contact@getsendstack.com', // Required firstName: 'Send', // Optional lastName: 'Stack', // Optional tags: [ 'Client', 'Awesome', ], // Optional optIn: true, // Optional ), ); /** * Using the Facade */ SendStack::subscribers()->update( uuid: '1234-1234-1234-1234', request: new SubscriberRequest( email: 'contact@getsendstack.com', // Required firstName: 'Send', // Optional lastName: 'Stack', // Optional tags: [ 'Client', 'Awesome', ], // Optional optIn: true, // Optional ), );
删除订阅者
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->subscribers()->delete( uuid: '1234-1234-1234-1234' ); /** * Using the Facade */ SendStack::subscribers()->delete( uuid: '1234-1234-1234-1234', );
将标签附加到订阅者
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->subscribers()->attachTag( uuid: '1234-1234-1234-1234', tag: 'Early Access', ); /** * Using the Facade */ SendStack::subscribers()->attachTag( uuid: '1234-1234-1234-1234', tag: 'Early Access', );
从订阅者中删除标签
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->subscribers()->removeTag( uuid: '1234-1234-1234-1234', tag: 'Early Access', ); /** * Using the Facade */ SendStack::subscribers()->removeTag( uuid: '1234-1234-1234-1234', tag: 'Early Access', );
检查电子邮件地址是否为活动订阅者
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->isActiveSubscriber( email: 'taylor@laravel.com', ); /** * Using the Facade */ SendStack::isActiveSubscriber( email: 'taylor@laravel.com', );
获取所有标签
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->tags()->all(); /** * Using the Facade */ SendStack::tags()->all();
创建新的标签
use SendStack\Laravel\Contracts\ClientContract; use SendStack\Laravel\Facades\SendStack; use SendStack\Laravel\Http\Requests\TagRequest; /** * Without a Facade */ $client = app()->make( abstract: ClientContract::class, ); $client->tags()->create( request: new TagRequest( name: 'Test', // Required allowFormSubscription: true, // Optional ), ); /** * Using the Facade */ SendStack::tags()->create( request: new TagRequest( name: 'Test', // Required allowFormSubscription: true, // Optional ), );
测试
composer test
变更日志
请参阅变更日志获取有关最近更改的更多信息。
安全漏洞
请查阅我们的安全策略以了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。