Example #1
0
 /**
  * request character data from CCP API
  * @param int $characterId
  * @return array
  */
 public function getPublicCharacterData($characterId)
 {
     $characterData = [];
     $apiPath = self::getEnvironmentData('CCP_XML') . '/eve/CharacterInfo.xml.aspx';
     $baseOptions = $this->getRequestOptions();
     $requestOptions = ['method' => 'GET', 'content' => ['characterID' => (int) $characterId]];
     $requestOptions = array_merge($baseOptions, $requestOptions);
     $apiResponse = Lib\Web::instance()->request($apiPath, $requestOptions);
     if ($apiResponse['body'] && ($xml = simplexml_load_string($apiResponse['body']))) {
         if (isset($xml->result) && is_object($rowApiData = $xml->result->children())) {
             foreach ($rowApiData as $item) {
                 // map attributes to array
                 if (count($item->children()) == 0) {
                     $characterData[$item->getName()] = strval($item);
                 }
             }
         }
     }
     $data = (new Mapper\CcpCharacterMapper($characterData))->getData();
     return $data;
 }
Example #2
0
 /**
  * set new ingame waypoint
  * @param Model\CharacterModel $character
  * @param int $systemId
  * @param array $options
  * @return array
  */
 public function setWaypoint(Model\CharacterModel $character, $systemId, $options = [])
 {
     $crestUrlParts = parse_url(self::getCrestEndpoint());
     $waypointData = [];
     if ($crestUrlParts) {
         $accessToken = $character->getAccessToken();
         $endpoints = $this->getEndpoints($accessToken);
         // get endpoint list for "ui" endpoints
         $uiEndpoints = $endpoint = $this->walkEndpoint($endpoints, $accessToken, ['decode', 'character', 'ui']);
         if (isset($uiEndpoints['setWaypoints']) && isset($uiEndpoints['setWaypoints']['href'])) {
             $endpointUrl = $uiEndpoints['setWaypoints']['href'];
             $systemEndpoint = self::getCrestEndpoint() . '/solarsystems/' . $systemId . '/';
             // request body
             $content = ['clearOtherWaypoints' => (bool) $options['clearOtherWaypoints'], 'first' => (bool) $options['first'], 'solarSystem' => ['href' => $systemEndpoint, 'id' => (int) $systemId]];
             $requestOptions = ['timeout' => self::CREST_TIMEOUT, 'method' => 'POST', 'user_agent' => $this->getUserAgent(), 'header' => ['Scope: characterNavigationWrite', 'Authorization: Bearer ' . $character->getAccessToken(), 'Host: ' . $crestUrlParts['host'], 'Content-Type: application/vnd.ccp.eve.PostWaypoint-v1+json;charset=utf-8'], 'content' => json_encode($content, JSON_UNESCAPED_SLASHES)];
             $apiResponse = Lib\Web::instance()->request($endpointUrl, $requestOptions);
             if (isset($apiResponse['body'])) {
                 $responseData = json_decode($apiResponse['body']);
                 if (empty($responseData)) {
                     $waypointData['systemId'] = (int) $systemId;
                 } elseif (isset($responseData->message) && isset($responseData->key)) {
                     // waypoint could not be set...
                     $error = (object) [];
                     $error->type = 'error';
                     $error->message = $responseData->key;
                     $waypointData['error'] = $error;
                 }
             }
         }
     }
     return $waypointData;
 }