Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Push notification SDK(AnPush、Bark、Chanify、DingTalk、Discord、Gitter、GoogleChat、IGot、Lark、Mattermost、MicrosoftTeams、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、WeWork、WPush、XiZhi、YiFengChuanHua、ZohoCliq、Zulip).

License

Notifications You must be signed in to change notification settings

guanguans/notify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

notify

Note

Push notification SDK(AnPush、Bark、Chanify、DingTalk、Discord、Gitter、GoogleChat、IGot、Lark、Mattermost、MicrosoftTeams、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、WeWork、WPush、XiZhi、YiFengChuanHua、ZohoCliq、ZohoCliqWebHook、Zulip).

tests check & fix styling codecov Latest Stable Version GitHub release (with filter) Total Downloads License

Platform support

Related repositories

Requirement

  • PHP >= 8.0

Installation

composer require guanguans/notify -v

Usage example

Quick start

$response = (new Guanguans\Notify\DingTalk\Client(
 new Guanguans\Notify\DingTalk\Authenticator('c44fec1ddaa8a833156efb77b7865d62ae13775418030d94d05da08bfca73')
 ))
 ->send(
 Guanguans\Notify\DingTalk\Messages\BtnsActionCardMessage::make([
 'title' => 'This is title(keyword).',
 'text' => 'This is text.',
 ])
 )
 // ->dump()
 ->json();
// 1. Create authenticator
$authenticator = new Guanguans\Notify\DingTalk\Authenticator(
 'c44fec1ddaa8a833156efb77b7865d62ae13775418030d94d05da08bfca73',
 // 'SECc32bb7345c0f73da2b9786f0f7dd5083bd768a29b82e6d460149d730eee51'
);
// 2. Create client
$client = new Guanguans\Notify\DingTalk\Client($authenticator);
// 3. Create message
$message = Guanguans\Notify\DingTalk\Messages\BtnsActionCardMessage::make([
 'title' => 'This is title(keyword).',
 'text' => 'This is text.',
 // 'btnOrientation' => 1,
 // 'btns' => [
 // [
 // 'title' => 'This is title 1.',
 // 'actionURL' => 'https://github.com/guanguans/notify',
 // ],
 // ],
])
 ->btnOrientation(1)
 ->addBtn([
 'title' => 'This is title 2.',
 'actionURL' => 'https://github.com/guanguans/notify',
 ]);
// 4. Send message
$response = $client
 // ->baseUri('base-uri')
 // ->connectTimeout(10)
 // ->debug(true)
 // ->proxy('http://127.0.0.1:1087')
 // ->timeout(30)
 // ->verify(false)
 // ->push(
 // GuzzleHttp\Middleware::log(
 // new Psr\Log\NullLogger,
 // new GuzzleHttp\MessageFormatter(GuzzleHttp\MessageFormatter::DEBUG)
 // ),
 // 'log'
 // )
 // ->before(
 // 'log',
 // GuzzleHttp\Middleware::mapRequest(
 // static fn (Psr\Http\Message\RequestInterface $request) => $request
 // ),
 // )
 ->send($message)
 ->dump()
 // ->throw()
 ->json();

Asynchronous requests

$promise = $client->sendAsync($message);
$response = $promise->wait();

Concurrent requests

/** @var iterable<array-key, \Guanguans\Notify\Foundation\Contracts\Message> $messages */
/** @var array<array-key, \Guanguans\Notify\Foundation\Response|\Psr\Http\Message\ResponseInterface> $responses */
$responses = $client->pool($messages);

Hyperf integration

use Guanguans\Notify\Foundation\Client;
use GuzzleHttp\HandlerStack;
use Hyperf\Guzzle\CoroutineHandler;
use Hyperf\Guzzle\HandlerStackFactory;
use Hyperf\Guzzle\PoolHandler;
// Set Handler directly
// $client->setHandler(make(CoroutineHandler::class));
// $client->setHandler(make(PoolHandler::class));
$client->setHandler((fn () => $this->getHandler($this->option))->call(new HandlerStackFactory));
// Or set HandlerStackResolver
$client->setHandlerStackResolver(static fn (Client $client): HandlerStack => array_reduce(
 $client->defaultMiddlewares(),
 static fn (HandlerStack $handlerStack, callable $middleware) => tap($handlerStack)->push($middleware),
 (new HandlerStackFactory)->create()
));

Completion

Tip

Required to install Laravel Idea plugin.

completion

Testing

composer test

Benchmark

composer benchmark
+---------------------+--------------------------+-----+-------+-----+----------+-----------+--------+
| benchmark | subject | set | revs | its | mem_peak | mode | rstdev |
+---------------------+--------------------------+-----+-------+-----+----------+-----------+--------+
| SendMessageBench | benchSendMessage | | 10000 | 3 | 9.345mb | 186.142μs | ±0.05% |
| CreateInstanceBench | benchCreateAuthenticator | | 10000 | 3 | 6.970mb | 0.775μs | ±0.44% |
| CreateInstanceBench | benchCreateMessage | | 10000 | 3 | 6.970mb | 1.776μs | ±0.56% |
| CreateInstanceBench | benchCreateClient | | 10000 | 3 | 7.410mb | 12.889μs | ±0.58% |
+---------------------+--------------------------+-----+-------+-----+----------+-----------+--------+

Changelog

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

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

Thanks

License

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

About

Push notification SDK(AnPush、Bark、Chanify、DingTalk、Discord、Gitter、GoogleChat、IGot、Lark、Mattermost、MicrosoftTeams、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、WeWork、WPush、XiZhi、YiFengChuanHua、ZohoCliq、Zulip).

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 6

Languages

AltStyle によって変換されたページ (->オリジナル) /