-
Notifications
You must be signed in to change notification settings - Fork 2
/
send.php
66 lines (53 loc) · 2.04 KB
/
send.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
require_once __DIR__.'/vendor/autoload.php';
use gotchapt\RabbitPhpUtils\Message;
use gotchapt\RabbitPhpUtils\MessageSender;
use splitbrain\phpcli\CLI;
use splitbrain\phpcli\Options;
class Send extends CLI
{
const INDEX_ROUTING_KEY = 0;
const INDEX_EXCHANGE = 1;
protected function setup(Options $options)
{
$options->setHelp('Simple command to send a message with a given payload and routing key');
$options->registerArgument('routing-key', 'Message routing key');
$options->registerArgument('exchange', 'Exchange where message is sent to', false);
$options->registerOption('stdin-payload', 'Message payload');
$options->registerOption('file-payload', 'File with json payload', 'p', 'file-payload');
$options->registerOption('file-headers', 'File with json headers', 'h', 'file-headers');
}
protected function main(Options $options)
{
$args = $options->getArgs();
$inputPayload = $options->getOpt('payload');
$filePayload = $options->getOpt('file-payload');
$fileHeaders = $options->getOpt('file-headers');
$payload = $filePayload ? json_decode(trim(file_get_contents($filePayload)), true) : $inputPayload;
if (empty($payload)) {
throw new \Exception('Empty payload');
}
$headers = $fileHeaders
? json_decode(trim(file_get_contents($fileHeaders)), true)
: [];
;
if ($fileHeaders && empty($payload)) {
throw new \Exception('Malformed headers');
}
try {
$message = new Message(json_encode($payload, true), $headers);
$messageSender = new MessageSender();
$messageSender->send(
$message,
$args[self::INDEX_ROUTING_KEY],
isset($args[self::INDEX_EXCHANGE]) ? $args[self::INDEX_EXCHANGE] : false
);
} catch (\Exception $e) {
echo $e->getTraceAsString();
throw $e;
}
}
}
// execute it
$cli = new Send();
$cli->run();