Esempio n. 1
0
 /**
  * Create an EventMessageBundle from JSON data
  *
  * @param array $_jsonData
  *
  * @return EventMessageBundle
  */
 public static function fromJson($_jsonData)
 {
     $eventMessageBundle = new phpMyWave_EventMessageBundle();
     // Collect and add events.
     if (isset($_jsonData['events']['list']) && is_array($_jsonData['events']['list'])) {
         $events = array();
         foreach ($_jsonData['events']['list'] as $eventJSON) {
             if (isset($eventJSON['type'])) {
                 // Default event values.
                 $eventType = strtoupper((string) $eventJSON['type']);
                 // Validate event type.
                 $eventType = strtoupper((string) $eventJSON['type']);
                 if (!in_array($eventType, phpMyWave_Enum_EventType::values())) {
                     throw new Exception('Invalid type "' . $eventType . '" detected');
                 }
                 // Define event properties.
                 $eventNamespace = phpMyWave_Enum_EventType::$namespaceMapping[$eventType];
                 $eventWavelet = (object) array('waveId' => $_jsonData['wavelet']['waveId'], 'waveletId' => $_jsonData['wavelet']['waveletId']);
                 $eventBundle = $eventMessageBundle;
                 $eventModifiedBy = isset($eventJSON['modifiedBy']) ? (string) $eventJSON['modifiedBy'] : null;
                 $eventTimestamp = isset($eventJSON['timestamp']) ? (int) $eventJSON['timestamp'] : null;
                 $eventBlipId = isset($eventJSON['properties']['map']['blipId']) ? (string) $eventJSON['properties']['map']['blipId'] : null;
                 // Create event instance.
                 $events[] = new $eventNamespace($eventType, $eventWavelet, $eventBundle, $eventModifiedBy, $eventTimestamp, $eventBlipId);
             }
         }
         $eventMessageBundle->setEvents($events);
     }
     return $eventMessageBundle;
 }
Esempio n. 2
0
 /**
  * Processes the incoming event bundle.
  * 
  * @param phpMyWave_EventMessageBundle $eventMessageBundle
  */
 public function processEvents(phpMyWave_EventMessageBundle $eventMessageBundle)
 {
     foreach ($eventMessageBundle->getEvents() as $event) {
         if (method_exists($this, phpMyWave_Enum_EventType::$methodMapping[$event->getType()])) {
             call_user_func(array($this, phpMyWave_Enum_EventType::$methodMapping[$event->getType()]), $event);
         }
     }
 }
Esempio n. 3
0
 public function handle()
 {
     $eventMessageBundle = phpMyWave_EventMessageBundle::fromJson($this->getJSONRequest());
     foreach ($this->_robots as $robotReflection) {
         // Initialize robot.
         $robotNamespace = $robotReflection->getName();
         $robotInstance = new $robotNamespace();
         // Process events.
         $robotInstance->processEvents($eventMessageBundle);
     }
 }