/**
  * @inheritdoc
  */
 public function handleMessage(AbstractMessage $message, ConnectionInterface $sender)
 {
     // Only handle one type of request
     if ($message->getType() === AbstractMessage::TYPE_USERS_REQUEST) {
         return new UsersResponse([]);
     }
     return false;
 }
 /**
  * StatisticsResponse constructor.
  *
  * @param string            $type
  * @param StatisticsRequest $request
  * @param mixed             $response
  */
 public function __construct($type, $request, $response)
 {
     $payload = new \stdClass();
     $payload->request = $request;
     $payload->response = $response;
     parent::__construct($type, $payload);
 }
 /**
  * AuthenticationRequest constructor.
  *
  * @param string $accessToken
  */
 public function __construct($accessToken)
 {
     if (!is_string($accessToken)) {
         throw new MalformedRequestException('Malformed access token');
     }
     parent::__construct(self::TYPE_AUTHENTICATION_REQUEST, $accessToken);
 }
 /**
  * UsersRequest constructor.
  *
  * @param string $instanceName
  *
  * @throws MalformedRequestException
  */
 public function __construct($instanceName)
 {
     if (!is_string($instanceName)) {
         throw new MalformedRequestException('Missing required parameter "instanceName"');
     }
     parent::__construct(self::TYPE_USERS_REQUEST, $instanceName);
 }
 /**
  * @inheritdoc
  */
 public function handleMessage(AbstractMessage $message, ConnectionInterface $sender)
 {
     // Wrap database exceptions in the more generic RequestFailedException
     try {
         switch ($message->getType()) {
             case AbstractMessage::TYPE_POPULAR_CHANNELS_REQUEST:
                 /* @var PopularChannelsRequest $message */
                 return new PopularChannelsResponse($message, $this->getPopularChannels($message->getInstanceName(), $message->getUserName(), $message->getLimit(), $message->getTimeFrame()));
             case AbstractMessage::TYPE_MOST_ACTIVE_WATCHERS_REQUEST:
                 /* @var MostActiveWatchersRequest $message */
                 return new MostActiveWatchersResponse($message, $this->getMostActiveWatchers($message->getInstanceName(), $message->getLimit(), $message->getTimeFrame()));
             case AbstractMessage::TYPE_INSTANCES_REQUEST:
                 /* @var InstancesRequest $message */
                 return new InstancesResponse($this->configuration->getInstances());
             case AbstractMessage::TYPE_USERS_REQUEST:
                 /* @var UsersRequest $message */
                 return new UsersResponse($this->getUsers($message->getInstanceName()));
         }
     } catch (PropelException $e) {
         throw new RequestFailedException('A database error occured: ' . $e->getMessage());
     }
     return false;
 }
 /**
  * StatisticsRequest constructor.
  *
  * @param string    $type
  * @param \stdClass $parameters
  *
  * @throws MalformedRequestException
  */
 public function __construct($type, $parameters)
 {
     parent::__construct($type, $parameters);
     /* @var \stdClass $parameters */
     if (!isset($parameters->instanceName) || empty($parameters->instanceName)) {
         throw new MalformedRequestException('Missing mandatory "instanceName" parameter');
     }
     $this->_instanceName = $parameters->instanceName;
     if (isset($parameters->timeFrame)) {
         $this->_timeFrame = new TimeFrame($parameters->timeFrame);
     } else {
         $this->_timeFrame = new TimeFrame(TimeFrame::TIME_FRAME_ALL_TIME);
     }
 }
 /**
  * StatusUpdatesMessage constructor.
  *
  * @param InstanceStatusCollection $collection
  */
 public function __construct(InstanceStatusCollection $collection)
 {
     parent::__construct(self::TYPE_STATUS_UPDATES, $collection);
 }
 /**
  * @inheritdoc
  */
 public function __construct()
 {
     parent::__construct(self::TYPE_INSTANCES_REQUEST, null);
 }
 /**
  * AuthenticationResponse constructor.
  *
  * @param string $status
  */
 public function __construct($status)
 {
     parent::__construct(AbstractMessage::TYPE_AUTHENTICATION_RESPONSE, $status);
 }
 /**
  * UsersResponse constructor.
  *
  * @param User[] $users
  */
 public function __construct(array $users)
 {
     parent::__construct(self::TYPE_USERS_RESPONSE, $users);
 }
 /**
  * InstancesResponse constructor.
  *
  * @param Instance[] $instances
  */
 public function __construct(array $instances)
 {
     parent::__construct(self::TYPE_INSTANCES_RESPONSE, $instances);
 }
 /**
  * @inheritdoc
  */
 public function handleMessage(AbstractMessage $message, ConnectionInterface $sender)
 {
     if ($message->getType() !== AbstractMessage::TYPE_AUTHENTICATION_REQUEST) {
         return false;
     }
     /* @var AuthenticationRequest $message */
     $status = AuthenticationResponse::STATUS_FAILURE;
     // Add the sender to the list of authenticated clients
     if ($message->getAccessToken() === $this->configuration->getAccessToken()) {
         $status = AuthenticationResponse::STATUS_SUCCESS;
         $this->_authenticatedClients->attach($sender);
         $this->logger->notice('Client authenticated successfully');
     } else {
         $this->logger->warning('Got invalid authentication request from client');
     }
     return new AuthenticationResponse($status);
 }