neotel-apply/lib/ApplicationAlerters.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];
}
}