neotel-apply/lib/ApplicationAlerters.php

58 lines
1.7 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> {$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;
$data = json_encode([
"content" => "From `{$user}@{$tilde}` \n> {$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];
}
}