Esempio n. 1
0
 /**
  * @param SlackTimestamp $slackTimestamp
  * @return SlackMessage[]
  */
 public function getMessages(SlackTimestamp $slackTimestamp)
 {
     $response = $this->commander->execute('channels.history', ['channel' => $this->channel, 'oldest' => $slackTimestamp->getValue()]);
     $responseBody = $response->getBody();
     $responses = [];
     if (isset($responseBody['messages'])) {
         foreach ($responseBody['messages'] as $message) {
             \array_push($responses, new SlackMessage($message['text'], SlackTimestamp::createFromSlackString($message['ts'])));
         }
     }
     return $responses;
 }
Esempio n. 2
0
 public function testPollRespondsToKeyWordMessage()
 {
     $slackTimestamp = SlackTimestamp::createFromDatetimeAndCounter(new \DateTime('-1 hour'), 0);
     $this->mockSince->expects(self::once())->method('getLastTime')->willReturn($slackTimestamp);
     $this->mockSlack->expects(self::once())->method('getMessages')->willReturn([new SlackMessage(Input::KEYWORD . ' does respond to', $slackTimestamp)]);
     $message = $this->input->poll();
     self::assertInstanceOf(InputMessage::class, $message);
     self::assertFalse($message->isEmpty());
     self::assertEquals(' does respond to', $message->toString());
 }
Esempio n. 3
0
 /**
  * @return MessageInterface
  */
 public function poll()
 {
     $messages = $this->slack->getMessages($this->since->getLastTime());
     $returnValue = InputMessage::createFromNothing();
     foreach ($messages as $message) {
         if ($returnValue->isEmpty() === true && \strtolower(\substr($message->toString(), 0, \strlen(self::KEYWORD))) == self::KEYWORD) {
             $this->logger->info(self::class . ": " . $message->toString());
             $returnValue = InputMessage::createFromString(\substr($message->toString(), \strlen(self::KEYWORD)));
             $this->since->update($message->getTimestamp());
         }
     }
     if ($returnValue->isEmpty()) {
         $this->logger->info(self::class . ': No Message', ['messages' => $messages]);
         $this->since->update(SlackTimestamp::createNow());
     }
     return $returnValue;
 }
Esempio n. 4
0
 /**
  * @param $timestamp
  * @return SlackTimestamp
  */
 private function createSinceFromTimestamp($timestamp)
 {
     return SlackTimestamp::createFromSlackString($timestamp);
 }