65 lines
2.2 KiB
PHP
65 lines
2.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
namespace NeotelApply;
|
|
|
|
use IrisHelpers\CurlHelpers;
|
|
use Serhiy\Pushover;
|
|
use Serhiy\Pushover\Api\Message\Message as PushoverMessage;
|
|
use Serhiy\Pushover\Api\Message\Notification as PushoverNotification;
|
|
|
|
final class ApplicationAlerters {
|
|
/**
|
|
* @param string[] $key Hook key (unused)
|
|
* @param mixed[] $params Array of [user, tilde, message]
|
|
* @return mixed[] Array of [user, tilde, message]
|
|
*/
|
|
public static function pushover(array $key, array $params): array {
|
|
list($user, $tilde, $message) = $params;
|
|
|
|
$application = new Pushover\Application($_ENV[IX_ENVBASE . '_PUSHOVER_API_TOKEN']);
|
|
$pushovermessage = new PushoverMessage(
|
|
"from {$user} @ {$tilde}\n---\n{$message}",
|
|
'new neotel application',
|
|
);
|
|
|
|
$pushoverusers = explode(',', $_ENV[IX_ENVBASE . '_PUSHOVER_USER_KEYS']);
|
|
foreach ($pushoverusers as $userkey) {
|
|
$recipient = new Pushover\Recipient($userkey);
|
|
$notification = new PushoverNotification($application, $recipient, $pushovermessage);
|
|
$response = $notification->push();
|
|
}
|
|
|
|
return [$user, $tilde, $message];
|
|
}
|
|
|
|
/**
|
|
* @param string[] $key Hook key (unused)
|
|
* @param mixed[] $params Array of [user, tilde, message]
|
|
* @return mixed[] Array of [user, tilde, message]
|
|
*/
|
|
public static function discord(array $key, array $params): array {
|
|
list($user, $tilde, $message) = $params;
|
|
|
|
$repl_from = ['\\', '-', '#', '*', '+', '`', '.', '[', ']', '(', ')', '!', '&', '<', '>', '_', '{', '}'];
|
|
$repl_to = ['\\\\', '\-', '\#', '\*', '\+', '\`', '\.', '\[', '\]', '\(', '\)', '\!', '\&', '\<', '\>', '\_', '\{', '\}'];
|
|
|
|
$x_user = preg_replace('/\R/', ' ', str_replace($repl_from, $repl_to, $user));
|
|
$x_tilde = preg_replace('/\R/', ' ', str_replace($repl_from, $repl_to, $tilde));
|
|
$x_message = preg_replace('/\R/', ' ', str_replace($repl_from, $repl_to, $message));
|
|
|
|
$data = json_encode([
|
|
"content" => "**User:**\n> {$x_user}\n**Tilde/Pubnix:**\n> {$x_tilde}\n**Message:**\n> {$x_message}",
|
|
]);
|
|
|
|
$curl_opts = [
|
|
CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
|
|
CURLOPT_POST => 1,
|
|
CURLOPT_POSTFIELDS => $data,
|
|
];
|
|
|
|
$response = CurlHelpers::fetchUrl($_ENV[IX_ENVBASE . "_DISCORD_WEBHOOK_URL"], $curl_opts, true);
|
|
|
|
return [$user, $tilde, $message];
|
|
}
|
|
}
|