Beispiel #1
0
 /**
  * Connect to ARI.
  *
  * @param string $address Example ws://localhost:8088/ari/events?api_key=username:password&app=stasis_app_name
  */
 public function connect($address)
 {
     $components = parse_url($address);
     $host = $components['host'];
     $port = $components['port'];
     $path = $components['path'];
     $query = $components['query'];
     $queryParts = [];
     parse_str($query, $queryParts);
     $this->stasisApplicationName = $queryParts['app'];
     $apiKey = $queryParts['api_key'];
     list($username, $password) = explode(':', $apiKey);
     $this->endpoint = new PestJSON('http://' . $host . ':' . $port . dirname($path));
     $this->endpoint->setupAuth($username, $password, 'basic');
     $this->wsClient = new WebSocket($address, $this->eventLoop, $this->logger);
     $this->wsClient->on("message", function (WebSocketMessage $rawMessage) {
         $message = new Message($rawMessage->getData());
         $eventType = '\\phparia\\Events\\' . $message->getType();
         if (class_exists($eventType)) {
             $event = new $eventType($this, $rawMessage->getData());
         } else {
             $this->logger->warn("Event: '{$eventType}' not implemented");
             // @todo Create a generic event for any that are not implemented
             return;
         }
         // Emit the specific event (just to get it back to where it came from)
         if ($event instanceof IdentifiableEventInterface) {
             $this->logger->notice("Emitting ID event: {$event->getEventId()}");
             $this->wsClient->emit($event->getEventId(), array('event' => $event));
         }
         // Emit the general event
         $this->logger->notice("Emitting event: {$message->getType()}");
         $this->wsClient->emit($message->getType(), array('event' => $event));
     });
 }
Beispiel #2
0
 /**
  * @param AriClient $client
  * @param string $response
  */
 public function __construct(AriClient $client, $response)
 {
     $this->client = $client;
     parent::__construct($response);
     $this->application = $this->response->application;
     $this->timestamp = property_exists($this->response, 'timestamp') ? new \DateTime($this->response->timestamp) : null;
 }
Beispiel #3
0
 /**
  * @param AriClient $client
  * @param string $response
  */
 public function __construct(AriClient $client, $response)
 {
     $this->client = $client;
     parent::__construct($response);
     $this->application = $this->getResponseValue('application');
     $this->timestamp = $this->getResponseValue('timestamp', '\\DateTime');
 }