/**
  * @param string $asgardUrl
  * @return AsgardTask[]
  */
 public function read($asgardUrl)
 {
     $response = $this->client->request('GET', $asgardUrl);
     if ($response->getStatusCode() != 200) {
         throw new \InvalidArgumentException(sprintf("Url does not work: %s", $asgardUrl));
     }
     $content = $response->getBody();
     $allTasks = json_decode($content, true);
     $completedTasks = $allTasks["completedTaskList"];
     $result = [];
     foreach ($completedTasks as $task) {
         $result[] = AsgardTask::fromData($task);
     }
     return $result;
 }
 /**
  * @param $aggregation
  * @param AsgardTask $task
  */
 private function incrementTotalDeploys(&$aggregation, $task)
 {
     $year = $task->getYear();
     $weekOfYear = $task->getWeekOfYear();
     $app = $task->getApp();
     $aggregation[$year][$weekOfYear][$app]++;
 }
 /**
  * @param AsgardTask $task
  * @return boolean
  */
 public function matches($task)
 {
     return trim($task->getApp()) !== '';
 }
 /**
  * @param AsgardTask $task
  * @return boolean
  */
 public function matches($task)
 {
     return $task->getStatus() === AsgardTask::STATUS_COMPLETED;
 }
 /**
  * @param AsgardTask $task
  * @return boolean
  */
 public function matches($task)
 {
     return sprintf(self::TASK_NAME_PATTERN, $task->getApp()) === $task->getName();
 }