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 67 68 69 70 71 72 73 74
<?php
namespace Catapult;
class Message extends GenericResource {
public function __construct()
{
$data = Ensure::Input(func_get_args());
parent::_init($data, new DependsResource,
new LoadsResource(
array("primary" => "GET", "id" => "id", "init" => "", "silent" => false)
),
new SchemaResource(
array("fields" => array(
'id', 'direction', 'callbackUrl', 'callbackTimeout',
'fallbackUrl', 'from', 'to', 'state', 'time', 'text',
'errorMessage', 'tag', 'media', 'receiptRequested'
), "needs" => array("id", "from", "to", "state"))
),
new SubFunctionResource
);
}
public function create()
{
$args = Ensure::Input(func_get_args());
return $this->send($args->get());
}
public function send($args)
{
$data = Ensure::Input($args);
$url = URIResource::Make($this->path);
if ($data->has("media")) {
$data->add("media", (string) new MediaURL($data->val("media", $this)));
}
$message_id = Locator::Find($this->client->post($url, $data->get()));
$data->add("id", $message_id);
return Constructor::Make($this, $data->get(), array("messageId" => "id"));
}
}