Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/metamta/adapter/PhabricatorMailAmazonSNSAdapter.php
12256 views
1
<?php
2
3
final class PhabricatorMailAmazonSNSAdapter
4
extends PhabricatorMailAdapter {
5
6
const ADAPTERTYPE = 'sns';
7
8
public function getSupportedMessageTypes() {
9
return array(
10
PhabricatorMailSMSMessage::MESSAGETYPE,
11
);
12
}
13
14
protected function validateOptions(array $options) {
15
PhutilTypeSpec::checkMap(
16
$options,
17
array(
18
'access-key' => 'string',
19
'secret-key' => 'string',
20
'endpoint' => 'string',
21
'region' => 'string',
22
));
23
}
24
25
public function newDefaultOptions() {
26
return array(
27
'access-key' => null,
28
'secret-key' => null,
29
'endpoint' => null,
30
'region' => null,
31
);
32
}
33
34
public function sendMessage(PhabricatorMailExternalMessage $message) {
35
$access_key = $this->getOption('access-key');
36
37
$secret_key = $this->getOption('secret-key');
38
$secret_key = new PhutilOpaqueEnvelope($secret_key);
39
40
$endpoint = $this->getOption('endpoint');
41
$region = $this->getOption('region');
42
43
$to_number = $message->getToNumber();
44
$text_body = $message->getTextBody();
45
46
$params = array(
47
'Version' => '2010-03-31',
48
'Action' => 'Publish',
49
'PhoneNumber' => $to_number->toE164(),
50
'Message' => $text_body,
51
);
52
53
return id(new PhabricatorAmazonSNSFuture())
54
->setParameters($params)
55
->setEndpoint($endpoint)
56
->setAccessKey($access_key)
57
->setSecretKey($secret_key)
58
->setRegion($region)
59
->setTimeout(60)
60
->resolve();
61
}
62
63
}
64
65