예제 #1
0
 /**
  * @param EveApiReadWriteInterface $data
  * @param EveApiRetrieverInterface $retrievers
  * @param EveApiPreserverInterface $preservers
  * @param int                      $interval
  *
  * @throws LogicException
  * @return bool
  */
 public function oneShot(EveApiReadWriteInterface $data, EveApiRetrieverInterface $retrievers, EveApiPreserverInterface $preservers, &$interval)
 {
     if (!$this->gotApiLock($data)) {
         return false;
     }
     $retrievers->retrieveEveApi($data);
     if ($data->getEveApiXml() === false) {
         $mess = sprintf('Could NOT retrieve Eve Api data for %1$s/%2$s', strtolower($this->getSectionName()), $this->getApiName());
         $this->getLogger()->debug($mess);
         return false;
     }
     $this->xsltTransform($data);
     if ($this->isInvalid($data)) {
         $mess = sprintf('Data retrieved is invalid for %1$s/%2$s', strtolower($this->getSectionName()), $this->getApiName());
         $this->getLogger()->warning($mess);
         $data->setEveApiName('Invalid' . $this->getApiName());
         $preservers->preserveEveApi($data);
         return false;
     }
     $preservers->preserveEveApi($data);
     // No need / way to preserve XML errors to the database with normal
     // preserve.
     if ($this->isEveApiXmlError($data, $interval)) {
         return true;
     }
     return $this->preserve($data->getEveApiXml());
 }
예제 #2
0
 /**
  * @param EveApiReadWriteInterface $data
  * @param EveApiRetrieverInterface $retrievers
  * @param EveApiPreserverInterface $preservers
  * @param int                      $interval
  *
  * @throws LogicException
  * @return bool
  */
 public function oneShot(EveApiReadWriteInterface $data, EveApiRetrieverInterface $retrievers, EveApiPreserverInterface $preservers, &$interval)
 {
     if (!$this->gotApiLock($data)) {
         return false;
     }
     $corp = $data->getEveApiArguments();
     $corpID = $corp['corporationID'];
     // Can NOT include corporationID or only get public info.
     if (array_key_exists('keyID', $corp)) {
         unset($corp['corporationID']);
         $data->setEveApiArguments($corp);
     }
     $retrievers->retrieveEveApi($data);
     if ($data->getEveApiXml() === false) {
         $mess = sprintf('Could NOT retrieve any data from Eve API %1$s/%2$s for %3$s', strtolower($this->getSectionName()), $this->getApiName(), $corpID);
         $this->getLogger()->notice($mess);
         return false;
     }
     $this->xsltTransform($data);
     if ($this->isInvalid($data)) {
         $mess = sprintf('The data retrieved from Eve API %1$s/%2$s for %3$s is invalid', strtolower($this->getSectionName()), $this->getApiName(), $corpID);
         $this->getLogger()->warning($mess);
         $data->setEveApiName('Invalid' . $this->getApiName());
         $preservers->preserveEveApi($data);
         return false;
     }
     $preservers->preserveEveApi($data);
     // No need / way to preserve XML errors to the database with normal
     // preserve.
     if ($this->isEveApiXmlError($data, $interval)) {
         return true;
     }
     return $this->preserve($data->getEveApiXml(), $corpID);
 }
예제 #3
0
 /**
  * @param EveApiReadWriteInterface $data
  * @param EveApiRetrieverInterface $retrievers
  * @param EveApiPreserverInterface $preservers
  * @param int                      $interval
  *
  * @throws LogicException
  * @return bool
  */
 public function oneShot(EveApiReadWriteInterface $data, EveApiRetrieverInterface $retrievers, EveApiPreserverInterface $preservers, &$interval)
 {
     if (!$this->gotApiLock($data)) {
         return false;
     }
     if ('Char' === $this->getSectionName()) {
         $ownerID = $data->getEveApiArgument('characterID');
     } else {
         $ownerID = $data->getEveApiArgument('corporationID');
     }
     $accountKey = $data->getEveApiArgument('accountKey');
     $retrievers->retrieveEveApi($data);
     if ($data->getEveApiXml() === false) {
         if ('10000' === $accountKey) {
             $mess = sprintf('Corporation %1$s does NOT have a faction warfare account %2$s', $ownerID, $accountKey);
             $this->getLogger()->info($mess);
             return false;
         }
         $mess = sprintf('Could NOT retrieve any data from Eve API %1$s/%2$s for %3$s on account %4$s', strtolower($this->getSectionName()), $this->getApiName(), $ownerID, $accountKey);
         $this->getLogger()->notice($mess);
         return false;
     }
     $this->xsltTransform($data);
     if ($this->isInvalid($data)) {
         $mess = sprintf('The data retrieved from Eve API %1$s/%2$s for %3$s on account %4$s is invalid', strtolower($this->getSectionName()), $this->getApiName(), $ownerID, $accountKey);
         $this->getLogger()->warning($mess);
         $data->setEveApiName('Invalid' . $this->getApiName());
         $preservers->preserveEveApi($data);
         return false;
     }
     $preservers->preserveEveApi($data);
     // No need / way to preserve XML errors to the database with normal
     // preserve.
     if ($this->isEveApiXmlError($data, $interval)) {
         return true;
     }
     $this->preserve($data->getEveApiXml(), $ownerID, $accountKey);
     return true;
 }