WorkerCapability.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace Twilio\Jwt\TaskRouter;
  3. /**
  4. * Twilio TaskRouter Worker Capability assigner
  5. *
  6. * @author Justin Witz <justin.witz@twilio.com>
  7. * @license http://creativecommons.org/licenses/MIT/ MIT
  8. */
  9. class WorkerCapability extends CapabilityToken {
  10. private $tasksUrl;
  11. private $workerReservationsUrl;
  12. private $activityUrl;
  13. public function __construct($accountSid, $authToken, $workspaceSid, $workerSid, $overrideBaseUrl = null, $overrideBaseWSUrl = null) {
  14. parent::__construct($accountSid, $authToken, $workspaceSid, $workerSid, null, $overrideBaseUrl, $overrideBaseWSUrl);
  15. $this->tasksUrl = $this->baseUrl . '/Tasks/**';
  16. $this->activityUrl = $this->baseUrl . '/Activities';
  17. $this->workerReservationsUrl = $this->resourceUrl . '/Reservations/**';
  18. //add permissions to fetch the list of activities, tasks, and worker reservations
  19. $this->allow($this->activityUrl, "GET", null, null);
  20. $this->allow($this->tasksUrl, "GET", null, null);
  21. $this->allow($this->workerReservationsUrl, "GET", null, null);
  22. }
  23. protected function setupResource() {
  24. $this->resourceUrl = $this->baseUrl . '/Workers/' . $this->channelId;
  25. }
  26. public function allowActivityUpdates() {
  27. $method = 'POST';
  28. $queryFilter = array();
  29. $postFilter = array("ActivitySid" => $this->required);
  30. $this->allow($this->resourceUrl, $method, $queryFilter, $postFilter);
  31. }
  32. public function allowReservationUpdates() {
  33. $method = 'POST';
  34. $queryFilter = array();
  35. $postFilter = array();
  36. $this->allow($this->tasksUrl, $method, $queryFilter, $postFilter);
  37. $this->allow($this->workerReservationsUrl, $method, $queryFilter, $postFilter);
  38. }
  39. }