/**
  * Checks that user event data has been converted.
  *
  * @param array $data
  * @param \Phergie\Irc\Event\UserEvent $event
  */
 protected function checkUserEventData(array $data, UserEvent $event)
 {
     $this->assertSame($data['prefix'], $event->getPrefix());
     $this->assertSame($data['nick'], $event->getNick());
     $this->assertSame($data['user'], $event->getUsername());
     $this->assertSame($data['host'], $event->getHost());
     $this->assertSame($data['message'], $event->getMessage());
     $this->assertSame($data['command'], $event->getCommand());
     $this->assertSame($data['targets'], $event->getTargets());
 }
 /**
  * Tests getSource().
  *
  * @param string $target
  * @param string $source
  * @dataProvider dataProviderGetSource
  */
 public function testGetSource($target, $source)
 {
     $connection = Phake::mock('\\Phergie\\Irc\\ConnectionInterface');
     Phake::when($connection)->getNickname()->thenReturn('bot');
     $this->event->setNick('user');
     $this->event->setConnection($connection);
     $this->event->setTargets(array($target));
     $this->assertSame($source, $this->event->getSource());
 }
 public function handleMessage(UserEvent $event, Queue $queue)
 {
     // make sure we don't react twice when the nfo command gets triggered
     if (strpos($event->getMessage(), 'nfo ') === false) {
         if (preg_match_all("/[a-z0-9._]{4,}-[a-z0-9]{3,}/i", $event->getMessage(), $matches)) {
             $matches = array_slice($matches[0], 0, $this->limit);
             foreach ($matches as $dirname) {
                 $commandEvent = new CommandEvent();
                 $commandEvent->fromEvent($event);
                 $commandEvent->setCustomParams(array($dirname));
                 $this->handleNfoCommand($commandEvent, $queue, false);
             }
         }
     }
 }
 /**
  * @param Url $url
  * @param UserEvent $event
  * @param EventQueue $queue
  */
 protected function sendMessage(Url $url, UserEvent $event, EventQueue $queue)
 {
     $message = $this->getHandler()->handle($url);
     $queue->ircPrivmsg($event->getSource(), $message);
 }
 /**
  * Modifies a term's karma.
  *
  * @param string $term   Term to modify
  * @param string $action Karma action (either ++ or --)
  * @param \Phergie\Irc\Event\UserEvent $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  * @return bool|\React\Promise\Promise
  */
 protected function modifyKarma($term, $action, UserEvent $event, Queue $queue)
 {
     $nick = $event->getNick();
     $canonicalTerm = $this->getCanonicalTerm($term, $nick);
     if ($canonicalTerm == strtolower($nick)) {
         $message = 'You can\'t give yourself karma.';
         $queue->ircPrivmsg($event->getSource(), $message);
         return false;
     }
     $karma = 0;
     return $this->messenger->rpc(MessageFactory::rpc('fetchKarma', ['term' => $canonicalTerm]))->then(function ($payload) use($event, $queue, $action, $term, $canonicalTerm, &$karma) {
         $this->logDebug('payload: ' . var_export($payload, true));
         $karma = $payload['karma'] + ($action == '++' ? 1 : -1);
         return MessageFactory::rpc('modifyKarma', ['term' => $canonicalTerm, 'karma' => $karma]);
     })->then([$this->messenger, 'rpc'])->then(function ($payload) use($event, $queue, $action, $term) {
         $this->logDebug('payload: ' . var_export($payload, true));
         $queue->ircPrivmsg($event->getSource(), $this->getUserMessage('karma' . $action, $term));
         return $payload['karma'];
     });
 }